Ruby 中 And/&& 的运算符优先级 [重复]

2024-01-03

我有一个关于 Ruby 中的 and/&&/= 关键字的问题。

ruby 文档说上述关键字的优先级是:(1)&&、(2)=、(3)and。

我写了这段代码:

def f(n) 
 n
end

if a = f(2) and  b = f(4) then  
    puts "1) #{a} #{b}" 
 end

if a = f(2) &&  b = f(4) then   
    puts "2) #{a} #{b}"     
end

输出是:

1) 2 4 [预期]

2) 4 4 [Why?]

出于某种原因,使用 && 会导致 a 和 b 的计算结果均为 4?


我不太明白你问的问题。我的意思是,你有already自己给出了答案,before甚至问这样的问题:&&结合得比= while and结合不那么紧密=.

因此,在第一种情况下,表达式的计算如下:

( a=f(2) )  and  ( b=f(4) )
( a=  2  )  and  ( b=f(4) )
      2     and  ( b=f(4) ) # a=2
      2     and  ( b=  4  ) # a=2
      2     and        4    # a=2; b=4
                       4    # a=2; b=4

对于第二种情况,评估如下:

a   =   (  f(2) && ( b=f(4) )  )
a   =   (    2  && ( b=f(4) )  )
a   =   (    2  && ( b=  4  )  )
a   =   (    2  &&       4     ) # b=4
a   =                    4       # b=4
                         4       # b=4; a=4
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby 中 And/&& 的运算符优先级 [重复] 的相关文章

  • Gitlab 机架攻击安装

    我正在安装 gitlab 并遵循 Gitlab 安装指南的所有说明 一切正常 但在 初始化数据库并激活高级功能 步骤中 它失败了 https github com gitlabhq gitlabhq blob master doc inst
  • Ruby 中救援的替代方案?

    好像我有begin rescue end我的代码中到处都是语句 这似乎不是正确的做法 谁能建议我如何捕获任何异常而不必将所有内容都放在里面begin rescue end 有什么方法可以让 Ruby 闭嘴并继续前进 即使出现异常也是如此 与
  • Rails 嵌套 with_option :if 在验证中使用

    validate updatable First validation there is with options if gt Proc new object object errors empty do updatable updatab
  • Rails JSON 多重嵌套关联

    我有一个对象 测试列表 其中包含问题和奖励问题 每个问题都有一个主题模型 我试图将它们全部包含在 JSON API 中 但我不断收到奇怪的难以理解的语法错误消息 我可以让它处理问题和主题或奖励问题和主题 但不能同时处理两者 这是我现在所拥有
  • 在 Rails 控制器中存储对象的最佳方式(会话除外)?

    我有一个 Rails 控制器 class Controllername lt application def method1 obj API CALL session obj access token redirect to redirec
  • Ruby 中 block 和 &block 的区别

    为什么有时我应该在接受块的函数内使用 block 而有时应该使用 block block只是一个局部变量 block是对传递给该方法的块的引用 def foo block nil p block end foo gt nil foo tes
  • 声明实例变量迭代哈希!

    我想做以下事情 我想声明一个迭代字典的类的实例变量 假设我有这个哈希 hash key1 gt value1 key2 gt value2 key3 gt value3 我想将每个键作为类的实例变量 我想知道我是否可以声明迭代该哈希的变量
  • 使 diff-lcs 的输出可读

    我正在使用 diff lcs gem 输出两个 html 内容体之间的差异 这是示例内容 版本一 p Paragraph one Sentence one p p Paragraph two Another sentence p p Par
  • ruby 无法复制 Fixnum

    我有一些这样的代码 ssh files id rsa pub id rsa ssh files each with index do item index ssh files index generate ssh path creator
  • Ruby 有哪些图形包/API?

    Similar Perl 有哪些图形包 API https stackoverflow com questions 460325 what graphing packages apis exist for perl 我正在对不同语言的在线图
  • 无||假与假||红宝石中的零

    nil false回报false and false nil回报nil 有人对此有解释吗 在 Ruby 中 一切都是表达式 表达式将返回其中计算的最后一个值 对于您的两个示例 左侧 表达式的计算结果为假值 因此 Ruby 然后计算右侧并返回
  • 使用正则表达式检查至少 8 位数字的字符串

    我的正则表达式如下 d s 12 这将允许数字 空格 但我想确保字符串至少包含 8 位数字 一些允许的字符串如下 1323 24 233 24243434 43 43435 4554345 434 它不应该允许这样的字符串 1213 232
  • Windows 上的 ruby​​ 中出现 SSL 错误

    我收到以下错误 C Users user Desktop folder gt ruby exchange rate rb C Ruby23 x64 lib ruby 2 3 0 net http rb 933 in connect nonb
  • 安装heroku toolbelt后出现Ruby错误

    我正在 win 7 32 位系统上使用 Heroku 但我没有管理员权限 我已经下载并安装了heroku工具带如下http community webfaction com questions 11803 heroku toolbelt h
  • before_filter set_locale 除了控制器

    My routes rb MyApp Application routes draw do scope locale do all resources here end namespace blog do resources posts o
  • 尝试安装 Rails 时,执行 gem ... (Gem::RemoteFetcher::FetchError) 503 错误

    这是当我尝试使用 Ruby 2 1 1 和 RVM 执行 gem install Rails v 4 1 0 时出现的错误 错误 执行 gem 时 Gem RemoteFetcher FetchError 错误 响应服务不可用 503 ht
  • 安装 mysql2 时出错:无法构建 gem 本机扩展

    我在尝试安装时遇到一些问题mysql2Rails 的宝石 当我尝试通过运行安装它时bundle install or gem install mysql2它给了我以下错误 安装 mysql2 时出错 错误 无法构建 gem 本机扩展 我该如
  • 如何按键按字母顺序对 Ruby 哈希进行排序

    我正在尝试按键按字母顺序对哈希进行排序 但如果不创建自己的排序类 我似乎无法找到一种方法来做到这一点 我发现下面的代码可以按值排序 如果它是整数 我正在尝试修改它 但没有任何运气 temp ninjas 36 temp pirates 12
  • ActiveRecord::Enum - PG::InvalidTextRepresentation:错误:整数输入语法无效:

    我遇到了一个奇怪的错误 希望有人能指出我正确的方向 我有一个名为 组织 的模型和一个名为 组织 的属性department 请参阅下面的架构摘录 t integer department default 0 在我的模型内部已经定义了这个属性
  • 将用户输入转换为整数

    所以我有一个用户可以输入价格的表格 我正在尝试创建一个 before validation 来规范化数据 如果用户放置 则剪裁它 before validation do unless self price blank then self

随机推荐

  • Android SQLite - 命名参数

    我正在开发使用 SQLite 作为本地存储的 Android 应用程序 我需要在 sql 查询中使用参数 但我发现的所有示例都包含未命名的参数 如下所示 INSERT INTO SomeTable ColA ColB ColC VALUES
  • facebookConnectPlugin 未定义(ngCordova、Ionic 应用程序)

    我正在尝试将本机 fb 连接添加到我的离子应用程序 我在用着 离子 恩科尔多瓦 http ngcordova com docs plugins facebook http ngcordova com docs plugins faceboo
  • 跨多个标签获取选择和环绕内容

    我有一个脚本可以更改所选文本的背景颜色 但是 当跨多个元素 标签选择文本时 我遇到了问题 我得到的代码是 var text window getSelection getRangeAt 0 var colour document creat
  • 给定一个 HttpResponseMessage,如何读取请求的内容?

    Given a System Net Http HttpResponseMessage 我可以通过我的请求获得相当多的信息response RequestMessage 例如 response RequestMessage RequestU
  • Java堆溢出,强制垃圾回收

    我创建了一个包含一系列子元素的 trie 树 删除单词时 我将子项设置为空 我认为这会删除节点 删除是一个相对术语 我知道 null 不会删除子级 只是将其设置为 null 当使用大量单词时 会导致堆溢出 在 Linux 上运行 top 我
  • XPath 之后的正则表达式反对标记?

    我已经在寻找问题的解决方案一段时间了 并且在 regex101 com 上玩了一段时间 但找不到解决方案 我面临的问题是我必须为不同的输入选择一个字符串 因此我想使用正则表达式来从这些字符串中获取所需的数据 正则表达式将来自每个字符串的单独
  • IntelliJ 目标字节码恢复

    对于我目前正在处理的一个项目 IntelliJ 给了我编译错误Error java javacTask source release 8 requires target release 1 8 我进入 设置 gt 构建 执行 部署 gt 编
  • Windows Eclipse CDT 分析器

    我在 Windows 7 下使用 Eclipse CDT Juno 请问有人可以为该环境推荐一个好的分析器吗 如果没有 请告知可能合适的独立应用程序 您可以在Windows7中使用gprof MinGW端口 有关更多详细信息 请参阅此帖子
  • 如何访问 Azure 上的站点文件

    所以我叔叔让我在他的网站上更新一些东西 我发现他使用天蓝色服务 我以前从未使用过这项服务 环顾四周后 我认为这就像搜索应用程序服务一样简单 然后单击唯一正在运行的应用程序 然后在侧面板上单击开发中心 然后选择 FTP 访问 然后我使用 Fi
  • 在 HTML5 画布中绘制带有线性渐变的圆弧

    我在画布上画了一个圆弧 是否可以给它提供三种颜色的线性渐变 是的 这是可能的 Javascript中有一个方法 名为createLinearGradient它获取画布上下文作为源并应用由sx sy dx dy坐标 前两个选项定义起始坐标 后
  • 除了 12 小时后会话超时之外,Google Colab 还有其他限制吗?

    限制之一是每次会话只能持续 12 小时 GPU和TPU的使用有限制吗 是的 您只能使用 1 个 GPU 内存有限为 12GB TPU 具有 64 GB 高带宽内存 您可以在此处阅读article https medium com janni
  • 如何测量 NodeJS 中请求花费的时间

    const axios require axios axios get url then response gt console log response catch err gt console log err 我如何测量网站返回整页需要
  • 什么是 ORM,它是如何工作的,以及我应该如何使用它? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的
  • 如何检测试剂中的“Enter”按键?

    给出以下代码 input type text value text app state on change fn e if 31 keyCode e println ENTER println NOT ENTER 如何更改if条件以便可以将
  • 为什么 Swift 不允许非可选类型的弱引用?

    这并不是纯粹的好奇 有一种感觉 我可能误解了 Swift 中弱引用的一些内容 假设我从视图控制器创建一个类并将其引用传递给初始化程序 class MyClass vc self 由于情节提要和窗口已经保留对此视图控制器的引用 因此 MyCl
  • 带德国日期的 Strftime

    我正在尝试用 strftime 打印德语日期 我已经尝试过了 date default timezone set Europe Berlin setlocale LC ALL de DE de DE euro deu deu deu ger
  • 如何从base64解码视频?

    我想在 base64 字符串中转换视频 所以我通过 android 中的视频转换 migBase64 方法 它将视频成功转换为字符串 但是当我将字符串解码为视频时 它无法在视频中正确转换 所以如果有人知道请帮助我 我尝试如下代码 Strin
  • Get-WinEvent 开始和结束日期不过滤记录

    get winevent 开始和结束日期不是过滤记录 谁能告诉我为什么 我期望从最近 2 天事件下面的代码中获得数据 但我得到的日期可以追溯到 2010 年 我的 Windows 时钟日期是正确的 String ComputerName e
  • JS:重命名变量以进行重构(使用 AST,而不是文本)

    我经常需要在重构代码时重命名变量 目前我使用正则表达式以一种有点老套的方式做 我最终不得不使用愚蠢的文本解决方案来解决缺乏实际结构的问题 例如 将 req 重命名为 request 并避免具有类似名称 例如 require 的副作用 想想这
  • Ruby 中 And/&& 的运算符优先级 [重复]

    这个问题在这里已经有答案了 我有一个关于 Ruby 中的 and 关键字的问题 ruby 文档说上述关键字的优先级是 1 2 3 and 我写了这段代码 def f n n end if a f 2 and b f 4 then puts