- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个数组:
a = [7, 1, 65, 4, 13, 97]
b = []
并且我尝试通过以下代码将每个 a
元素的 #divmod 返回值附加到 b
中:
b << a.map(&4.method(:divmod))
我期望的结果是:
b = [[1, 3], [0, 1], [16, 1], [1, 0], [3, 1], [24, 1]]
但我得到的是:
b = [[[0, 4], [4, 0], [0, 4], [1, 0], [0, 4], [0, 4]]]
我不明白为什么。谁能解释一下我不明白的地方?
(我必须使用 &:
因为我需要使用此代码作为方法 block 参数。)
最佳答案
您得到的结果有两个问题:
要修复 (1),您必须分配 map
的结果。而不是附加结果,即
b = a.map(...)
关于(2),您的代码相当于:
a.map { |n| 4.divmod(n) }
#=> [[0, 4], [4, 0], [0, 4], [1, 0], [0, 4], [0, 4]]
您想要的:(请注意,n
和 4
现在已交换)
a.map { |n| n.divmod(4) }
#=> [[1, 3], [0, 1], [16, 1], [1, 0], [3, 1], [24, 1]]
I'm having to use
&:
because I need to use this code as a method argument
我不确定你的意思,但是如果你不想有一个显式的 block 参数,你可以用 &
传递一个 proc 或 lambda相反:
divmod4 = ->(n) { n.divmod(4) }
b = a.map(&divmod4)
#=> [[1, 3], [0, 1], [16, 1], [1, 0], [3, 1], [24, 1]]
但是,自从 &divmod4
将convert the proc to a block argument ,上面相当于调用a.map { |n| n.divmod(4) }
直接地。仅当您想重用该过程时才需要这种方法,例如将其传递给不同的方法。
关于ruby - 这个 #divmod 方法正在做什么来输出这个结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76109199/
Euclidean division theorem ,大多数数学学生和Haskellers都熟悉,指出 Given two integers a and b, with b ≠ 0, there e
我有两个数组: a = [7, 1, 65, 4, 13, 97] b = [] 并且我尝试通过以下代码将每个 a 元素的 #divmod 返回值附加到 b 中: b [[0, 4], [4, 0]
我试图使用 numpy.divmod对于非常大的整数,我注意到一个奇怪的行为。大约2**63 ~ 1e19 (这应该是 python 3.5+ 中 int 的通常内存表示的限制),会发生这种情况: f
我一直在尝试这个,但失败了很多次: >>> x = (21, 4) >>> divmod(x) File "", line 1, in TypeError: divmod expected 2 a
Python 的divmod 函数运行正常,几乎就是我想要的。但是,对于需要执行的操作,它对非整数的行为需要略有不同。运行以下代码时,您可能会看到它正在尝试完成什么。 >>> function = d
来自 Haskell 报告: The quot, rem, div, and mod class methods satisfy these laws if y is non-zero: (x `qu
我记得在汇编中整数除法指令会产生商和余数。因此,在 python 中,内置的 divmod() 函数会比使用 % 和 // 运算符更好(假设当然需要商和余数)? q, r = divmod(n, d)
x86 和其他可能的架构提供了一种在 single operation ( DIV ) 中获取商和余数的方法。 .由于许多语言都有 DIVMOD 组合操作,(如 DIVREM in C# 、 DIVM
在Delphi中,DivMod函数的声明是 procedure DivMod(Dividend: Cardinal; Divisor: Word; var Result, Remainder: W
我有一个看起来像这样的 pandas 数据框: P-101 P-103 P-104 P-107 P-114 P-120 P 2415 2535 3345 5650
我试图将二进制字符串从末尾除以恒定长度:例如,'1001011000' 除以 3->['1','001',' 011','000']。从数字 600 开始, def bin_divby(dec,len
我想使用专门对 32 位操作数进行操作的 DivMod 函数。 implementation in the RTL返回 16 位变量的值。它的声明是: procedure DivMod(Dividen
我想格式化 SQL 查询的结果: 原始数据: 名字天爱丽丝60鲍勃52迈克266卢卡斯27 预期的格式化数据: 名字天爱丽丝2鲍勃1 22/30迈克8 26/30卢卡斯27/30 使用下面的代码我得到
在许多编程语言中,有一个组合运算将除法的商和余数作为整数返回。在很多情况下,它被称为 divmod因为它在一步中实现了除法和模函数的目的。 我想有一个操作的目的是,除法计算不需要执行两次,结果不需要表
我是一名优秀的程序员,十分优秀!