ruby - 检查两个变量中的任何一个是否存在
ruby - check if either of two variables exist
我需要检查是否设置了两个环境变量 env_http_proxy 或 http_proxy。如果设置了其中一个,则将值分配给局部变量。如果两者都不存在,那么局部变量应该设置为nil。
http_proxy = defined?(ENV['env_http_proxy']) ? ENV['env_http_proxy'] : defined?(ENV['http_proxy']) ? ENV['http_proxy'] : nil
这有什么问题吗?这似乎适用于第一个变量但不适用于第二个变量。
(PS:如果重要的话,我正在尝试在 Vagrantfile 中使用它)
另外,有人可以解释一下上面的语法吗?我是 ruby 菜鸟。快速搜索只显示了 defined?() 函数。但不是上面的扩展语法。
t = ENV['env_http_proxy'] || ENV['http_proxy']
作为一般规则,不要将 defined?
用于任何事情。这是一个元编程原语,用于实现偶尔称为 magic1..
的东西
e1 ? e2 : e3
运算符就像 C 一样工作,测试表达式 e1,然后取 e2 或 e3 的值。它在 Ruby 中的使用不如在其他语言中那么多。
由于 ENV 是一个类似散列的对象,它会 return nil
当不存在密钥时,Ruby 的无数令人敬畏的功能之一就是 ||
operator returns 表达式的真值。
1。 魔法:名词,见:Ruby on Rails.
我需要检查是否设置了两个环境变量 env_http_proxy 或 http_proxy。如果设置了其中一个,则将值分配给局部变量。如果两者都不存在,那么局部变量应该设置为nil。
http_proxy = defined?(ENV['env_http_proxy']) ? ENV['env_http_proxy'] : defined?(ENV['http_proxy']) ? ENV['http_proxy'] : nil
这有什么问题吗?这似乎适用于第一个变量但不适用于第二个变量。 (PS:如果重要的话,我正在尝试在 Vagrantfile 中使用它)
另外,有人可以解释一下上面的语法吗?我是 ruby 菜鸟。快速搜索只显示了 defined?() 函数。但不是上面的扩展语法。
t = ENV['env_http_proxy'] || ENV['http_proxy']
作为一般规则,不要将 defined?
用于任何事情。这是一个元编程原语,用于实现偶尔称为 magic1..
e1 ? e2 : e3
运算符就像 C 一样工作,测试表达式 e1,然后取 e2 或 e3 的值。它在 Ruby 中的使用不如在其他语言中那么多。
由于 ENV 是一个类似散列的对象,它会 return nil
当不存在密钥时,Ruby 的无数令人敬畏的功能之一就是 ||
operator returns 表达式的真值。
1。 魔法:名词,见:Ruby on Rails.