小编And*_*imm的帖子

如何委托通过随附的块进行调用?

我正在遍历一个对象图,并希望传递一个块,该块将从一个方法运行在结构的每个节点上 - 让我们称之为访问.

在顶部,我将调用一个块,我想委托初始调用访问根对象以访问其他对象.我可以使用&last_parameter_name将块解压缩到本地proc中 - 但是如何在我委托的调用中将proc转回块?

这是一个简化的例子,我调用(...)并希望将块委托给我的第二个调用(...)

def second(&block)   # ... ? ...
  block.call(72)
end

def first(&block)
  puts block.class     # okay - now I have the Proc version
  puts 'pre-doit'
  block.call(42)
  puts 'post-doit'
  second( ... ? ...)   # how do I pass the block through here?
end

first {|x| puts x*x}
Run Code Online (Sandbox Code Playgroud)

注意:我需要在first()和second()上使用相同的约定 - 即它们需要采用相同的东西.

阅读并尝试了答案后,我想出了一个更全面,更有效的例子:

class X 
  def visit(&x)
    x.call(50)
  end
end

class Y < X
  def visit(&x)
    x.call(100)
    X.new.visit(&x) …
Run Code Online (Sandbox Code Playgroud)

ruby delegation block proc-object

0
推荐指数
1
解决办法
2164
查看次数

0
推荐指数
2
解决办法
2610
查看次数

TypeError:使用inject时无法将String转换为Integer Error

[1,2,2,3].each.inject({}){|hash,e|
    hash[e.to_s]||=0
    hash[e.to_s]+=1
}
Run Code Online (Sandbox Code Playgroud)

它回来了

TypeError: can't convert String into Integer.
Run Code Online (Sandbox Code Playgroud)

ruby arrays

0
推荐指数
1
解决办法
1854
查看次数

计数字符在给定字符串中连续重复次数最多

有人知道,如何计算字符在给定字符串中连续重复次数最多.我需要非常简短的答案.

例如:"xxyyydduuummm"将返回'y,u,m'

ruby string

0
推荐指数
1
解决办法
851
查看次数

需要有关Ruby案例陈述的帮助

似乎我的代码永远不会通过switch语句运行.每次我创建一个Deck对象时,每个Card对象的套装和名称都是nil.谁能帮我吗?

class Card
def initialize (suit, number, name)
    @suit = suit
    @number = number
    @name = name         #
end
attr_reader :suit, :number, :name
end

class Deck
      def initialize
          @deck = Array.new
          for i in 0...4
              suit = case i
                  when i == 0 then "Spades"
                  when i == 1 then "Hearts"
                  when i == 2 then "Diamonds"
                  when i == 3 then "Clubs"
              end
          puts i
          puts suit     #Debug only
          for j in 2...15
              name = case j
                  when j …
Run Code Online (Sandbox Code Playgroud)

ruby switch-statement

0
推荐指数
2
解决办法
2963
查看次数

与日语和英语字符一起使用的html charset?

这是我第一次遇到这个问题.出于某种原因,我使用它

   <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
Run Code Online (Sandbox Code Playgroud)

我的破折号被替换为but,但是日文字符可以正常工作.我记得使用另一个字符集,情况被翻转(日语字符被无意义的字符替换)

是否适合所有人的一般字符集?我对这个想法完全不熟悉.

html character-encoding

0
推荐指数
1
解决办法
6456
查看次数

ruby正则表达式扫描多个匹配

我想在两个标签之间获取文本.

<b> foo</b>bar<br/> => bar

我试过用'<b>asdasd</b>qwe<br/>'.scan(/<b>[a-zA-Z0-9]*<\/b>(.*)<br\/>/)它,它给了我正确的结果.

但是当我尝试这个:

'<b>exclude</b>op1<br/>exclude 2<b>exclude</b>op2<br/>exclude 2<b>exclude</b>op3<br/>exclude 2'.scan(/<b>[a-zA-Z0-9]*<\/b>(.*)<br\/>/) { |ele|
puts ele
}
Run Code Online (Sandbox Code Playgroud)

它匹配第一个<b>标签和最后一个<br/>标签,并返回我期待一系列匹配的整个字符串

ruby regex html-parsing

0
推荐指数
2
解决办法
1292
查看次数

为什么在Float上调用to_i会从值中减去一个?

我有一个案例,我在Float对象上做一些数学运算,当我调用to_i时,它被减少一个.

value = 0.29 * 100
value.to_i
=> 28
Run Code Online (Sandbox Code Playgroud)

我知道浮点数是不精确的表示,但这比我预期的要多.发生了什么事,我该如何防止这种情况发生?

我正在使用ruby 1.8.7(它也发生在1.8.6).

ruby floating-point-precision

0
推荐指数
1
解决办法
446
查看次数

$ LOAD_PATH不包含工作目录?

为什么当前目录不包含在$ LOAD_PATH中?这看起来很奇怪.我只是继续添加它,但是有一些原因我没有看到它只是没有自动包含?

ruby load-path

0
推荐指数
1
解决办法
597
查看次数

为什么Ruby连接而不是添加2个值?

我写了一个小程序来测试Textmate 2(我对Ruby很新),并且由于某些原因它正在吐出4 + 9 = 49而不是13.

def add(x,y)
  c = x + y
  return c
end

puts "please enter a value "
a = gets.chomp
puts "please enter another value "
b = gets.chomp

printMe = add(a,b)

puts printMe
Run Code Online (Sandbox Code Playgroud)

ruby concatenation add

0
推荐指数
1
解决办法
752
查看次数