所以我使用了一些非常复杂的Sass来删除"&"
中的所有其他选择器.test, .test-2, .test-3, .test-4 {
$selectors: (&);
@if length(&) != 1 {
$selectors: (); // Works only with Ruby Sass
$i: 1;
@each $item in (&) {
$i: $i + 1;
@if $i % 2 == 0 {
$i: 0;
}@else{
$selectors: append($selectors, $item);
}
}
$selectors: to-string($selectors, ", ");
content: "#{$selectors}";
}
}
我对content属性的预期结果是:
content: ".test-2, .test-4";
使用Ruby Sass时,这正是我得到的。使用Libsass时,我收到此错误:
argument `$list` of `nth($list, $n)` must not be empty
此错误指的是自定义" to-string"中的代码。功能我使用:
@function to-string($list, $glue: '', $is-nested: false, $recursive: false) {
$result: null;
@for $i from 1 through length($list) {
$e: nth($list, $i);
@if type-of($e) == list and $recursive {
$result: $result#{to-string($e, $glue, true)};
}
@else {
$result: if(
$i != length($list) or $is-nested,
$result#{$e}#{$glue}, $result#{$e}
);
}
}
@return $result;
}
更具体地说,这一行:
$e: nth($list, $i);
我传递给to-string
函数(即$selectors
变量)的值似乎是空的,当它不应该是。我最初将其定义为空($selectors: ();
),但随后我追加了来自&
的所有其他项目。所以我不确定为什么它在这一点上是空的。
以下是Sassmesiter演示此问题:http://sassmeister.com/gist/332dae9a27983edd9d15
将上面演示中的编译器更改为Libsass以查看错误。
我不确定这是我的代码还是Libsass的问题。除非我确定这是一个Libsass问题,否则我不想在Libsass上打开一个问题。
由于
答案 0 :(得分:0)
好的,我深究了这一点。相当肯定这是一个Libsass问题。
看起来您无法直接遍历&
中的每个项目,但如果我将@each $item in & {
...
}
存储在变量中,它就会继续工作。
所以澄清一下,改变这个:
$this: &;
@each $item in $this {
...
}
到此:
JavaPairDStream<String, Iterable<Float>> groupedByKey = pairDstream.groupByKey();
JavaPairDStream<String, Float> medianPerPlug1h = groupedByKey.transformToPair(new Function<JavaPairRDD<String,Iterable<Float>>, JavaPairRDD<String,Float>>() {
public JavaPairRDD<String, Float> call(JavaPairRDD<String, Iterable<Float>> v1) throws Exception {
return v1.mapValues(new Function<Iterable<Float>, Float>() {
public Float call(Iterable<Float> v1) throws Exception {
List<Float> buffer = new ArrayList<Float>();
long count = 0L;
Iterator<Float> iterator = v1.iterator();
while(iterator.hasNext()) {
buffer.add(iterator.next());
count++;
}
float[] values = new float[(int)count];
for(int i = 0; i < buffer.size(); i++) {
values[i] = buffer.get(i);
}
Arrays.sort(values);
float median;
int startIndex;
if(count % 2 == 0) {
startIndex = (int)(count / 2 - 1);
float a = values[startIndex];
float b = values[startIndex + 1];
median = (a + b) / 2.0f;
} else {
startIndex = (int)(count/2);
median = values[startIndex];
}
return median;
}
});
}
});
medianPerPlug1h.print();
解决问题。