当前位置: 首页 > 面试题库 >

较少的列表作为混合参数

蒯嘉赐
2023-03-14
问题内容

说我有这个混入:

.loop-strings("A, B, C", "1, 2, 3", "X, Y, Z";);

像这样实现:

.loop-strings(@list, @index: 1) when (isstring(extract(@list, @index))) {
    @currentMember: extract(@list, @index);

    .do-something-with(@currentMember);

    .loop-strings(@list, (@index + 1)); /* loop the next member */
}

.do-something-with(...) {
    @args1 : e(@arguments); 
    @args2 : A, B, C;
    args1: @args1;
    args2: @args2;
    extract-args1-2: extract(@args1, 2);
    extract-args2-2: extract(@args2, 2);
}

结果:

args1: A, B, C;
extract-args1-2: extract(A, B, C, 2);
args1: 1, 2, 3;
extract-args1-2: extract(1, 2, 3, 2);
args1: X, Y, Z;
args2: A, B, C;
extract-args1-2: extract(X, Y, Z, 2);
extract-args2-2: B;

这些接缝是@foo:e("A, B, C");or @foo:~"A, B, C";和之间的区别@foo:A, B, C;

我似乎无法使用,extract(@foo, 2);除非将其定义为对象列表。

有没有一种方法可以将保留的字符串转换为对象列表


问题答案:

可能是e("A, B, C")~"A, B, C"和之间的差异A, B, C

是的,两者e("A, B, C")~"A, B, C"创造出永远不会认为是有意义的类型所谓的“匿名值”类型(它不是一个列表,而不是一个数字,甚至不是一个字符串)。基本上,逃避的值只是“不要碰我”或“我知道我在做什么!”之类的东西。东西,它们只是按“原样”输出,并且编译器从不尝试了解其中的内容。这基本上就是转义值的确切用途:“打印”出编译器无法理解的内容。

通常请注意,您可以在列表中同时使用逗号和空格作为值定界符。例如,您可以使用.loop-strings(A B C, 1 2 3, X Y Z;);(二维列表作为单个参数,因此使用多参数mixin,甚至可以在一行中获得一个树形列表)。您是否需要使用引号和/或转义值的任何特殊原因?例如,您可以将其编写为:

test {
    .loop-lists(A, B, C; 1, 2, 3; X, Y, Z);
}

.loop-lists(@lists...) {
    .loop(length(@lists));
    .loop(@i) when (@i > 0) {
        .loop((@i - 1));
        .do-something-with(extract(@lists, @i));
    }
}

.do-something-with(@list) {
    v1: extract(@list, 1);
    v2: extract(@list, 2);
    v3: extract(@list, 3);
}

提取(A,B,C,2);

目前,这是不正确的extract语法,extract仅接受两个参数,因此您可以将其编写为:

extract(A B C, 2);

或作为:

@list: A, B, C;
extract(@list, 2);

-–

这是一个带有几个其他通用提示的示例

test {
    .do-something(A B C, 1 2 3, X Y Z; foo bar, baz; banana);
}

.do-something(@p1, @p2, @p3) {
    args1: @arguments;                                     // 3D list
    args2: extract(@arguments, 1);                         // 2D list: A B C, 1 2 3, X Y Z
    args3: extract(extract(@arguments, 1), 1);             // 1D list: A B C
    args4: extract(extract(extract(@arguments, 1), 1), 1); // single value: A

    p1- :   @p1;               // A B C, 1 2 3, X Y Z
    p1-1:   extract(@p1, 1);   // A B C
    p1-3:   extract(@p1, 3);   // X Y Z

   @p2-1:   extract(@p2, 1);   // foo bar
    p2-1:   @p2-1;             // foo bar
    p2-1-2: extract(@p2-1, 2); // bar
    p2-2:   extract(@p2, 2);   // baz

    p3- :   @p3;               // banana
    p3-1:   extract(@p3, 1);   // banana
    // etc.

    quoted-p2: "@{p2}"; // if you need a quoted string do it in reverse (i.e. non-quoted list to a quoted string)
}


 类似资料:
  • 上一个小节中我们介绍了 Mixins 作为一个样式继承类实现了样式的复用功能,从这个小节开始我们来介绍下 Mixins 作为一个函数的用法,说到函数那么参数是必不可少的,所以我们这个小节先进行参数的介绍。 1. 什么是参数混合? 慕课解释: 含有传入参数的 Mixins 。 在 Less 中传入参数的 Mixins 就叫做参数混合,我们可将其理解为含有参数的函数。参数的传入有多种方式,大体上与 E

  • 问题内容: 我有一个python列表,说l 我想编写一个sql查询来获取列表中所有元素的数据,例如 我该如何完成? 问题答案: 到目前为止,答案一直是将这些值模板化为纯SQL字符串。这对于整数绝对没问题,但是如果我们想对字符串执行此操作,则会遇到转义问题。 这是一个使用参数化查询的变体,它对两个都适用:

  • 问题内容: 比较两个列表/集合并输出差异的最简单方法是什么?是否有任何内置函数可以帮助我比较嵌套列表/集? 输入: 预期产量: 问题答案: 因此,您需要两个项目列表之间的区别。 首先,我将每个列表列表变成一个元组列表,这样,由于元组是可哈希化的(列表不是),因此您可以将元组列表转换为一组元组: 然后可以进行设置: 编辑(由sdolan建议):您可以在一个列表中为每个列表完成最后两个步骤: 注意:是

  • 我已经这样声明了std::priority_queue。 我重载了less运算符,就像这样。

  • 但是我在public static void editlist(Collection list1,Collection list2)上得到一个错误,有人能告诉我如何纠正这个错误吗?有人能解释一下什么是java中的Collection*s吗

  • 问题内容: 我在SQL表中有一些列,例如text_en,text_es,text_de。现在,我只想根据语言从一列中检索值。因此,我创建了一个sql字符串, 并在vb代码中使用了 sql,但是sql返回了该列的名称,而不是该列的值。我如何获得价值? 问题答案: 你也可以