【问题标题】:Puts method in ruby [closed]将方法放入红宝石[关闭]
【发布时间】:2019-03-11 11:20:48
【问题描述】:

当我执行这个时,

puts "please enter your name" + " your name is " + gets

引号内的字符串语句("")没有出现,而是直接显示了提示符(即gets)。

当我执行代码时发生了什么?我想知道为什么字符串语句没有出现。

【问题讨论】:

  • 它尝试将所有内容与+ 连接起来,为此,它需要评估最后一个 (gets)。
  • 谢谢,阿列克谢。所以,你的意思是,除非 get 没有被评估,否则 cmd 不会显示任何内容,因为它应该是一个完整的语句,通过添加所有三个字符串块。我对吗?只是想重新检查。
  • 是的,没错。您可以puts "please ..."; puts "your name is " + gets; 来实现所需的功能。
  • 没有。不是“除非gets 不被评估”,而是“除非gets 被评估”。

标签: ruby parameter-passing


【解决方案1】:

如果将部分提取到变量中会变得更加明显:

a = "please enter your name"
b = " your name is "
c = gets

puts a + b + c

显然,getsputs 之前被调用。

要获得所需的结果,您可以使用两个 puts 调用并将输入存储在一个变量中:

puts "please enter your name"
name = gets.chomp
puts "your name is #{name}"

示例会话:

please enter your name
Caleb
your name is Caleb

【讨论】:

    【解决方案2】:

    在执行puts 之前,对其参数进行评估。为此,将执行两个 + 方法。为了执行第二个+,必须先计算其参数gets

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-21
      • 1970-01-01
      • 2010-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多