有没有办法在Swift 中map或reduce在Swift中获取数组的索引?我正在寻找像each_with_indexRuby 这样的东西.
func lunhCheck(number : String) -> Bool
{
var odd = true;
return reverse(number).map { String($0).toInt()! }.reduce(0) {
odd = !odd
return $0 + (odd ? ($1 == 9 ? 9 : ($1 * 2) % 9) : $1)
} % 10 == 0
}
lunhCheck("49927398716")
lunhCheck("49927398717")
Run Code Online (Sandbox Code Playgroud)
我想摆脱上面的odd变量.
场景是存在n不同大小的对象,不均匀地分布在m桶上.存储桶的大小是它包含的所有对象大小的总和.现在碰巧桶的大小变化很大.
如果我想将这些对象均匀地分布在这些桶上,以便每个桶的总大小大致相同,那么什么是一个好的算法呢?如果算法倾向于在完全均匀的扩展上减少移动大小,那将是很好的.
我在Ruby中有这种天真,无效和错误的解决方案.
buckets = [ [10, 4, 3, 3, 2, 1], [5, 5, 3, 2, 1], [3, 1, 1], [2] ]
avg_size = buckets.flatten.reduce(:+) / buckets.count + 1
large_buckets = buckets.take_while {|arr| arr.reduce(:+) >= avg_size}.to_a
large_buckets.each do |large|
smallest = buckets.last
until ((small_sum = smallest.reduce(:+)) >= avg_size)
break if small_sum + large.last >= avg_size
smallest << large.pop
end
buckets.insert(0, buckets.pop)
end
=> [[3, 1, 1, 1, 2, 3], [2, 1, 2, 3, 3], [10, 4], …Run Code Online (Sandbox Code Playgroud) 在Python中
def cross(A, B):
"Cross product of elements in A and elements in B."
return [a+b for a in A for b in B]
Run Code Online (Sandbox Code Playgroud)
如果用两个数组(或字符串)调用它,则返回一维数组.
但在CoffeeScript中
cross = (A, B) -> (a+b for a in A for b in B)
Run Code Online (Sandbox Code Playgroud)
返回一个二维数组.
我想要一个键盘快捷键来获取Visual Studio 2012中当前解决方案的最新版本(递归).我们正在使用TFS.
我试图映射
File.GetLatestSolutionFiles
File.GetLatestVersion
File.TfsGetLatestVersion
Run Code Online (Sandbox Code Playgroud)
但没有任何反应.有任何想法吗?
作为一种解决方法,我也试过并尝试将键盘快捷键映射到:
Tools.shell """c:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\TF.exe""" get $/OUR/REPOSITORY/Main /recursive
Run Code Online (Sandbox Code Playgroud)
这是我想要键盘快捷键的命令:

我想只在设置了一个名为@foo的对象时显示一行文本.在我看来,我正在尝试这样的事情:
<% if !@foo.new_record? || !@foo.nil? %>
Foo is not a new record or nil
<% end %>
Run Code Online (Sandbox Code Playgroud)
但这失败了,返回You have a nil object when you didn't expect it!
我很确定这是因为该new_record?方法而发生的.如何在不导致错误的情况下检查某些内容是否为新记录或为零?在PHP中,它可以通过询问来实现,if(!empty($foo))但即使是empty?rails中的方法也会导致返回相同的错误.
有任何想法吗?
我不认为使用运算符作为C#3.0中方法的参数是可能的,但有没有办法模拟它或某些语法糖,使它看起来像是在发生什么?
我问,因为我最近在C#中实现了画眉组合,但在翻译Raganwald的Ruby示例时
(1..100).select(&:odd?).inject(&:+).into { |x| x * x }
Run Code Online (Sandbox Code Playgroud)
其中写着"从1到100取数字,保留奇数,取这些数字的总和,然后回答那个数字的平方."
我没有看到Symbol#to_proc的东西.这就是&:在上面select(&:odd?)和inject(&:+)上面.
在Ruby中有一个each_conson Enumerable.它的工作原理如下
(1..5).each_cons(3) {|n| p n}
Run Code Online (Sandbox Code Playgroud)
[1,2,3]
[2,3,4]
[3,4,5]
我想在C#中这样做.LINQ会很好.
下面做了类似的事情,但是它循环了一对多,并且它也被硬编码以仅返回两个元素
var ints = new int[] { 1, 2, 3, 4, 5, 6, 7 };
var cons = ints.Select((o, i) =>
new int[]{ ints[i], i == ints.Length - 1 ? 0 : ints[i + 1] });
Run Code Online (Sandbox Code Playgroud)
如果它可以作为原始数组的迭代器创建而不必创建大量数组,那将是很好的.
我怎么能这样做
ruby -pe "sub /.*{((\d+\.){3}).*/, '\115'" < file.txt
Run Code Online (Sandbox Code Playgroud)
但如果我尝试scan而不是sub我得到
-e:1:在
<main>': undefined method扫描'for main:Object(NoMethodError)
这是令人困惑的,因为它们sub都不是一种方法Object.
我也尝试过Perl方式,类似于
ruby -ne "/.*/; puts $1" <file.txt
Run Code Online (Sandbox Code Playgroud)
但那并没有飞.
我在哪里可以找到涵盖此文档的文档?
是否可以在没有JPA的情况下设置ManyToOne关联在数据库中创建外键?
这些表由另一个系统拥有,并以异步方式填充.因此,我们不能在数据库中拥有FK.最终仍然存在一种关系.
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name="`Order Type`", referencedColumnName = "`Order Type`", insertable = false, updatable = false),
@JoinColumn(name="`Order No`", referencedColumnName = "`No`", insertable = false, updatable = false)
}, foreignKey = @javax.persistence.ForeignKey(value = ConstraintMode.NO_CONSTRAINT))
private OrderHeader orderHeader;
Run Code Online (Sandbox Code Playgroud)
问题是JPA SchemaUpdate尝试添加FK,即使ConstraintMode.NO_CONSTRAINT
[error] ohthSchemaUpdate - 无法添加外键约束
我们可以忽略它,如果它没有使其余的陈述失败
[error] ohthSchemaUpdate - 语句关闭后不允许任何操作.
我们正在使用hibernate-entitymanager 4.3.7.Final和JPA 2.1.
是否可以使用委托作为参数从C#调用IronRuby方法,以便yield这样做?
以下给出了错误的参数数量(1表示0)异常.
Action<string> action = Console.WriteLine;
var runtime = Ruby.CreateRuntime();
var engine = runtime.GetEngine("rb");
engine.Execute(@"
class YieldTest
def test
yield 'From IronRuby'
end
end
");
object test = engine.Runtime.Globals.GetVariable("YieldTest");
dynamic t = engine.Operations.CreateInstance(test);
t.test(action);
Run Code Online (Sandbox Code Playgroud)