无法理解ruby方法调用

时间:2017-06-07 06:09:20

标签: ruby

我在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

2 个答案:

答案 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 Aget_java_opts
PART Bmy_java_opts = get_java_opts和< 在PART Cmy_java_opts = @java_opts {
} 所以现在,
让我们假设您的PART A返回truefalse 如果PART A返回true,那么PART B将执行my_java_opts = get_java_opts 如果PART A返回false,那么PART C将执行my_java_opts = @java_opts