在grails中,我有一个Controller,它需要一个通过POST发送的'options'参数,这个参数可以是一个集合,即'options = A&options = B&options = C'进入grails,这要归功于grails magic,因为options = Collection of值为['A','B','C']的字符串.问题是,当用户只选择一个选项时,参数变为字符串而不是字符串[](或列表),当执行options.each然后每个,通过groovy魔法,逐个字符地处理......我怎么能强迫选项是字符串[]或列表所以options.each正确应用?
Ruby 带有方便的<=>比较运算符,并且原生原始类型支持它们。我想知道是否有一种简单的方法可以将它们组合起来以比较更复杂的对象,例如 Structs。例如,给定
class Datum < Struct.new(:code, :volume); end
datum1 = Datum.new('B',10)
datum2 = Datum.new('A',10)
datum3 = Datum.new('C',11)
data = [datum1, datum2, datum3]
Run Code Online (Sandbox Code Playgroud)
我想排序data的volume,然后如果volumes为相等的,由code。喜欢
data.sort {|a,b| (a.volume <=> b.volume) ??? (a.code <=> b.code)}
Run Code Online (Sandbox Code Playgroud)
我应该放入???什么?
我正在寻找一个解决方案:
<=>有谁知道为什么下面的矩阵随机分布产生不同的图?(这是为使用逆Wishart分布采样的一组10x10矩阵中的第一个单元生成PDF的图表;令人惊讶的是,这些图根据执行矩阵逆的方式而有所不同 - 似乎正确的图是通过Inverse [_]获得,为什么?)
基本代码:
<< MultivariateStatistics`;
Module[{dist, p, k, data, samples, scale, graphics, distribution},
p = 10;
k = 13;
samples = 500;
dist = WishartDistribution[IdentityMatrix[p], k];
(* a samples x p x p array *)
data = Inverse[#] & /@ RandomVariate[dist, samples];
(* distribution graphics *)
distribution[i_, j_] := Module[{fiber, f, mean, rangeAll, colorHue},
fiber = data[[All, i, j]];
dist = SmoothKernelDistribution[fiber];
f = PDF[dist];
Plot[f[z], {z, -2, 2},
PlotLabel -> ("Mean=" <> ToString[Mean[fiber]]),
PlotRange -> All]
]; …Run Code Online (Sandbox Code Playgroud)