Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么会出现错误:kotlin中的变量expect?_Kotlin - Fatal编程技术网

为什么会出现错误:kotlin中的变量expect?

为什么会出现错误:kotlin中的变量expect?,kotlin,Kotlin,我试图编写一个函数来查找kotlin中的多数元素,但是当我编译代码时,我在下面的一行中得到了变量expected error map[key]?.let{ value-> 下面是我正在尝试运行的函数。我是科特林的新手,不知道为什么会出现这个错误 fun majorityElement(nums: IntArray): Int { HashMap<Int,Int>().let{ map ->

我试图编写一个函数来查找kotlin中的多数元素,但是当我编译代码时,我在下面的一行中得到了变量expected error

                   map[key]?.let{ value->
下面是我正在尝试运行的函数。我是科特林的新手,不知道为什么会出现这个错误

fun majorityElement(nums: IntArray): Int {
        HashMap<Int,Int>().let{ map ->
                nums.forEach{ key->        
                   map[key]?.let{ value->
                        map[key]=value+1
                    }?:map[key]=1

                }
                map.forEach{entry->
                    if(entry.value>nums.size/2){
                        return entry.key
                    }
                }
        }
        return -1
    }

问题基本上在这一部分:

map[key]?.let { ... } ?: map[key] = 1
这里表达式的解析方式与您可能期望的不同。map[key]

赋值的l值必须是可以赋值的对象,即变量、属性、索引器,如map[key]=,但这里它是一个复杂的表达式 map[key]?。让{…}?:map[key]

如果只想在map[key]为null时执行赋值,可以在run函数中包装该语句:

map[key]?.let { ... } ?: run { map[key] = 1 }
也许用以下方式重写此块会更清楚:

// get value associated with key or 0 if there is none.
map[key] = map.getOrElse(key, { 0 }) + 1
从更高的角度来看,似乎需要计算整数数组中出现的数字。在这种情况下,可以使用更高级的函数方法:

val map = nums.asList().groupingBy { it }.eachCount()

// then find the majority in this map

问题基本上在这一部分:

map[key]?.let { ... } ?: map[key] = 1
这里表达式的解析方式与您可能期望的不同。map[key]

赋值的l值必须是可以赋值的对象,即变量、属性、索引器,如map[key]=,但这里它是一个复杂的表达式 map[key]?。让{…}?:map[key]

如果只想在map[key]为null时执行赋值,可以在run函数中包装该语句:

map[key]?.let { ... } ?: run { map[key] = 1 }
也许用以下方式重写此块会更清楚:

// get value associated with key or 0 if there is none.
map[key] = map.getOrElse(key, { 0 }) + 1
从更高的角度来看,似乎需要计算整数数组中出现的数字。在这种情况下,可以使用更高级的函数方法:

val map = nums.asList().groupingBy { it }.eachCount()

// then find the majority in this map