红宝石中的替代If-Else块

时间:2012-12-06 08:13:32

标签: ruby

我有一个代码,如果,除非阻止这样的次数:

选项是hashmap。

unless functioncall? options[:product]
    puts "Hello wrold"
end

任何人都可以解释这个流程,除非阻止。我是ruby的新手,我使用花括号块代替它。

1 个答案:

答案 0 :(得分:2)

转换为if-syntax

if语法中,这相当于:

if functioncall?(options[:product])
else
  puts "Hello World"
end

OR

if !functioncall?(options[:product])
  puts "Hello World"
end

布尔方法的输出

如果options hash有一个名为functioncall?(options[:product])的键,方法product将返回true。

您的方法的输出

根据选项哈希的内容,上面的方法将产生:

# options = { :key => value, :product => 'stuff'}
functioncall?(options[:product]) #=> true
# the output of your code would be nil

# options = { :key => value, :foo => 'bar'}
functioncall?(options[:product]) #=> false
# the output of your code would be "Hello World"