首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的Ruby有什么条件?

我的Ruby有什么条件?
EN

Stack Overflow用户
提问于 2016-09-07 06:37:51
回答 1查看 714关注 0票数 2

下面的条件语法显示irb中的字符串“是真”而不使用puts

代码语言:javascript
复制
irb(main):001:0> if true
irb(main):002:1>   'is true'
irb(main):003:1> else
irb(main):004:1*   'is false'
irb(main):005:1> end
=> "is true"

...yet当我在脚本中调用相同的语法并从命令行运行它时,它将被忽略。为什么?

代码语言:javascript
复制
# Odd behaviour:
puts "Why do only two of the three conditionals print?"

# This doesn't put anything to screen:
if true
  'is true_1'
else
  'is false'
end

puts "Seriously, why? Or better yet: how?"

# But this does:
if true
  puts 'is true_2'
else
  puts 'is false'
end

# And this works without "puts":
def truthiness
  if 1.send(:==, 1)
    'is true_3'
  else
    'is false'
  end
end

puts truthiness
puts "Weird."

当我将它作为脚本运行时,它会显示:

代码语言:javascript
复制
"Why do only two of the three conditionals print?
Seriously, why? Or better yet: how?
is true_2
is true_3
Weird."

FWIW,我跟随着Sandi的演讲“什么都不是什么”https://youtu.be/zc9OvLzS9mU ...and在听这段话:https://youtu.be/AULOC--qUOI道歉,因为我对Ruby很陌生,并且试图思考它是如何做到的。

编辑:有用的资源:

http://ruby-doc.org/core-2.3.1/Kernel.html#method-i-puts

https://softwareengineering.stackexchange.com/questions/150824/is-the-puts-function-of-ruby-a-method-of-an-object

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-07 06:41:14

这里的IRB输出显示操作的返回值,这不一定是在执行过程中打印到STDOUT (即终端)的内容。

您的脚本正在丢弃返回值,您必须这样做:

代码语言:javascript
复制
val = if true
        'is true_1'
      else
        'is false'
      end

puts val
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39362740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档