首页 \ 问答 \ Scala foreach奇怪的行为(Scala foreach strange behaviour)

Scala foreach奇怪的行为(Scala foreach strange behaviour)

我想在Scala中使用一个漂亮的一行遍历遍历一个值列表。

例如,这个工作很好:

scala> val x = List(1,2,3,4)
x: List[Int] = List(1, 2, 3, 4)

scala> x foreach println
1
2
3
4

但是如果我使用占位符_ ,它给我一个错误:

scala> x foreach println(_ + 1)
<console>:6: error: missing parameter type for expanded function ((x$1) =>x$1.$plus(1))
       x foreach println(_ + 1)
                         ^

这是为什么? 这里不能编译推断类型?


I want to iterate over a list of values using a beautiful one-liner in Scala.

For example, this one works well:

scala> val x = List(1,2,3,4)
x: List[Int] = List(1, 2, 3, 4)

scala> x foreach println
1
2
3
4

But if I use the placeholder _, it gives me an error:

scala> x foreach println(_ + 1)
<console>:6: error: missing parameter type for expanded function ((x$1) =>x$1.$plus(1))
       x foreach println(_ + 1)
                         ^

Why is that? Can't compiler infer type here?


原文:https://stackoverflow.com/questions/2173373
更新时间:2024-03-31 12:03

最满意答案

编辑:

有多选插件的jsFiddle示例

var limit = 3;

var $multiSel = $("select").multipleSelect({
placeholder: "Here is the placeholder",
width: 200,
filter: true,
selectAll: false,
onClick: function(view) {
    var $checkboxes = $multiSel.next().find("input[type='checkbox']").not(":checked");
    var selectedLen = $multiSel.multipleSelect('getSelects').length;
    if (selectedLen >= limit) {
       $checkboxes.prop("disabled", true);
    } else {
       $checkboxes.prop("disabled", false);
    }
 }
});

EDIT :

There working jsFiddle example with multi-select plugin

var limit = 3;

var $multiSel = $("select").multipleSelect({
placeholder: "Here is the placeholder",
width: 200,
filter: true,
selectAll: false,
onClick: function(view) {
    var $checkboxes = $multiSel.next().find("input[type='checkbox']").not(":checked");
    var selectedLen = $multiSel.multipleSelect('getSelects').length;
    if (selectedLen >= limit) {
       $checkboxes.prop("disabled", true);
    } else {
       $checkboxes.prop("disabled", false);
    }
 }
});

相关问答

更多
  • 当列表中没有选项隐藏选择全部: $(function() { $("#select3").multipleSelect({ isopen: true, multipleWidth: 55 }); // selectAll console.log(!$('#select3 option').length); ...
  • 使用这个问题的答案,我能够使它工作。 我将我的功能更改为以下内容: // select = id of the select control. // selected = list of json objects with an id representing those that are selected. updateSelection = function( select, selected ) { $('#'+select+' option').attr('selected', false ...
  • 编辑: 有多选插件的jsFiddle示例 var limit = 3; var $multiSel = $("select").multipleSelect({ placeholder: "Here is the placeholder", width: 200, filter: true, selectAll: false, onClick: function(view) { var $checkboxes = $multiSel.next().find("input[type='checkbo ...
  • 可悲的是,你不能改变下拉列表显示的项目,它由浏览器决定,使用大小选项,它将丢失其“下拉列表”表格,并将更多内容变为列表。 您可以尝试查找一些Jquery下拉列表,它们通常可以编辑为您想要的任何内容。 Sadly, you can't change the item's that the dropdownlist displays, it is decided by the browser, with the size option it will loose its 'dropdownlist' form, ...
  • 正如我在问题评论中所读到的那样,限制选择(指令)尚未支持开箱即用。 但是,我们可以通过以下方法获得类似的结果: 我们将添加一个ng-change ,它可以监听指令的ng-model并给出最新值。 然后我们决定最新值是否超出了选择的限制,如果是,我们为模型分配一个具有最大选择的先前保存的副本。 假设以下示例中的限制为2: $scope.changed = function(val) { if(val && val.length > 2) { $scope.myModel = $scope.prev ...
  • 我认为事件不会分配给新克隆的元素,即使在克隆方法中指定了“true”属性。 无论如何,这是一个快速的解决办法,以确保事件始终附加。 新小提琴: http : //jsfiddle.net/KjNb5/4/ 老小提琴: http : //jsfiddle.net/KjNb5/1/ HTML