小编use*_*119的帖子

从Map :: getOrElse返回的Kotlin mutableList()不公开add()

我有

data class Person(var name: String, var hobbies: List<String>)

val people = mutableListOf(
        Person("joe", asList("biking", "baking")),
        Person("jane", asList("baking")),
        Person("jack", asList("painting"))
)
val map = mutableMapOf<String, List<String>>()

for ((name, hobbies) in people) {

    for (hobby in hobbies) {

        var peopleWithThisHobby = map.getOrElse(hobby, { mutableListOf() })
        peopleWithThisHobby.plus(name)
        map[hobby] = peopleWithThisHobby
    }
}

println(map)
Run Code Online (Sandbox Code Playgroud)

在线peopleWithThisHobby.plus(name),IntelliJ auto complete没有给我这个add()方法.

我不得不使用:

var peopleWithThisHobby = map.getOrElse(hobby, { mutableListOf() })
peopleWithThisHobby = peopleWithThisHobby.plus(name)
map[hobby] = peopleWithThisHobby
Run Code Online (Sandbox Code Playgroud)

是什么赋予了?这是设计的吗?mutableList()getOrElse通话中返回的内容发生了什么变化?

我正在使用Kotlin插件版本:1.1.3-eap-85-IJ2017.2-1

kotlin

1
推荐指数
1
解决办法
149
查看次数

malloced指针在返回时更改值

我的代码看起来像这样:

Foo* create(args) {
    Foo *t = malloc (sizeof (Foo)) ;
    // Fill up fields in struct t from args. 
    return t;
} 
Run Code Online (Sandbox Code Playgroud)

电话是

Foo *created = create (args) 
Run Code Online (Sandbox Code Playgroud)

请注意,函数和函数调用是两个独立的模块.分配给该指针的值t上是mallocED是什么是在捕获的稍有不同created.似乎地址的MSB已更改并替换为fffff.LSB部分对于大约6-7个字符是相同的.

我不知道发生了什么.我正在使用GCC 4.6

c

0
推荐指数
1
解决办法
97
查看次数

标签 统计

c ×1

kotlin ×1