我想做一些简单明了的事情,比如min(5,10)
,或者Math.max(4,7)
.Ruby中有这种功能吗?
当它说"for..in迭代一个对象的可枚举属性时,我被引导到MDN for..in页面."
然后我进入了属性页的Enumerability和owner,它说"可枚举的属性是那些可以通过for..in循环迭代的属性".
字典将可枚举定义为可数,但我无法真实地想象这意味着什么.我可以得到一些可枚举的例子吗?
我可能错过了一些明显的东西,但是有没有办法在每个循环中访问散列内的迭代索引/计数?
hash = {'three' => 'one', 'four' => 'two', 'one' => 'three'}
hash.each { |key, value|
# any way to know which iteration this is
# (without having to create a count variable)?
}
Run Code Online (Sandbox Code Playgroud) var strs = new Collection<string>();
bool b = strs.All(str => str == "ABC");
Run Code Online (Sandbox Code Playgroud)
代码创建一个空的字符串集合,然后尝试确定集合中的所有元素是否为"ABC".如果你运行它,b
将是真的.
但是该集合甚至没有任何元素,更不用说任何等于"ABC"的元素了.
这是一个错误,还是有合理的解释?
hash = { "d" => [11, 22], "f" => [33, 44, 55] }
# case 1
hash.map {|k,vs| vs.map {|v| "#{k}:#{v}"}}.join(",")
=> "d:11,d:22,f:33,f:44,f:55"
# case 2
hash.map {|k,vs| vs.each {|v| "#{k}:#{v}"}}.join(",")
=> "11,22,33,44,55"
Run Code Online (Sandbox Code Playgroud)
唯一的区别是案例1使用vs.map
,案例2使用vs.each
.
这里发生了什么?
我有以下方法:
public bool IsValid
{
get { return (GetRuleViolations().Count() == 0); }
}
public IEnumerable<RuleViolation> GetRuleViolations(){
//code here
}
Run Code Online (Sandbox Code Playgroud)
为什么当我在.Count()
上面做时它用红色加下划线?
我收到以下错误:
错误1'System.Collections.Generic.IEnumerable'不包含'Count'的定义,并且没有扩展方法'Count'接受类型'System.Collections.Generic.IEnumerable'的第一个参数可以找到(你错过了吗?使用指令或程序集引用?)c:\ users\a\documents\visual studio 2010\Projects\NerdDinner\NerdDinner\Models\Dinner.cs 15 47 NerdDinner
C#/ .NET 4.0中的一个新功能是,您可以在foreach
不获取异常的情况下更改您的枚举.请参阅Paul Jackson的博客文章"并发的有趣副作用:在枚举时从集合中删除项目"以获取有关此更改的信息.
执行以下操作的最佳方法是什么?
foreach(var item in Enumerable)
{
foreach(var item2 in item.Enumerable)
{
item.Add(new item2)
}
}
Run Code Online (Sandbox Code Playgroud)
通常我使用IList
一个缓存/缓冲区直到结束foreach
,但是有更好的方法吗?
(1..4).collect do |x|
next if x == 3
x + 1
end # => [2, 3, nil, 5]
# desired => [2, 3, 5]
Run Code Online (Sandbox Code Playgroud)
如果满足条件,next
则collect
放入nil
数组,而我正在尝试做的是,如果满足条件,则不在返回的数组中放置任何元素.这可能不调用delete_if { |x| x == nil }
返回的数组吗?
(使用Ruby 1.8.7;我的代码摘录被大量抽象)
在C#中我会使用Enumerable.Empty()
,但是如何Stream
在Java中创建一个空?
enumerable ×10
ruby ×5
c# ×3
.net ×2
arrays ×1
asp.net ×1
enumeration ×1
java ×1
java-stream ×1
javascript ×1
linq ×1
list ×1