我在ruby文件中有一个方法定义(get_java_opts) - 然后又有一个方法用以下语法调用这个“get_java_opts”方法 - 这条线在做什么? -
get_java_opts ? my_java_opts = get_java_opts : my_java_opts = @java_opts
来自我的ruby文件的代码 -
def start
appdir = "#{@rootdir}/mydir"
wo_prop = "#{@rootdir}/app.properties"
get_java_opts ? my_java_opts = get_java_opts : my_java_opts = @java_opts
方法定义 -
def get_java_opts
yml = "#{@rootdir}/#{@test}.yaml"
y = YAML.load_file(yml) if File.exists?(yml)
java_opts = y[@app]['java_opts'] rescue "No YAML found"
end
答案 0 :(得分:3)
它被称为“三元运算符”。这一行
get_java_opts ? my_java_opts = get_java_opts : my_java_opts = @java_opts
等同于此
if get_java_opts
my_java_opts = get_java_opts
else
my_java_opts = @java_opts
end
答案 1 :(得分:0)
Ternary Operator
语法类似于condition ? true : false
让我们以get_java_opts ? my_java_opts = get_java_opts : my_java_opts = @java_opts
为例了解其工作原理
让我们将我们的表达分为PART A ? PART B : PART C
部分
现在,在PART A
你get_java_opts
,
在PART B
您my_java_opts = get_java_opts
和<
在PART C
你my_java_opts = @java_opts
{
}
所以现在,
让我们假设您的PART A
返回true
或false
如果PART A
返回true
,那么PART B
将执行my_java_opts = get_java_opts
如果PART A
返回false
,那么PART C
将执行my_java_opts = @java_opts
。