【问题标题】:Ruby syntax confusion brackets and hashRuby 语法混淆括号和哈希
【发布时间】:2016-07-26 19:22:04
【问题描述】:

目标:在odds 数组上使用.each 方法打印出数组中每一项的双倍值。换句话说,将每个项目乘以 2。

确保使用 print 而不是 puts,这样您的输出就会出现在一行上。

code:

odds = [1,3,5,7,9]

odds.each do |x|
    x *= 2 
    print "#{x}"
end

在 Codecademy 上做这个练习时,我对语法感到很困惑,为什么需要在 x 周围有一个 #{} 以及为什么不能只是:打印“x”或打印 #x”。什么哈希和括号的作用是什么?这让我感到困惑,为什么 ruby​​ 不打印出“#{X}”而不是“x”数字乘以 2,因为它被引号包围了?以前的练习也有这两个哈希和大括号 #{user_input} 控制台打印我们输入的任何内容,而不是打印出“#{user input}”本身。

【问题讨论】:

  • “标签”不是符号。这是 ruby​​ 中不存在的 twitter 语义。
  • odds.each { |x| puts x * 2 } 工作得很好。根本不需要字符串插值。

标签: ruby syntax brackets


【解决方案1】:

您不能执行print "x" 并期望它打印x 对象的值。如果你想打印 x 字母怎么办?所以,我们需要插值。 但是以这种方式使用的插值只是产生xa 字符串的附带效果。您可以在不进行插值的情况下执行相同的操作:

print x

无论如何,我可能会这样做

odds = [1,3,5,7,9]
odds.each { |x| print x * 2 }

关于插值:当你应该连接几个字符串时可以使用它,它会很难看。比如

puts name + " " + surname
puts "#{name} #{surname}"

我更喜欢后者

【讨论】:

    猜你喜欢
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    • 2013-07-20
    • 1970-01-01
    • 2020-08-01
    • 2012-09-02
    • 1970-01-01
    相关资源
    最近更新 更多