fanck0605 最近的时间轴更新
fanck0605

fanck0605

V2EX 第 447456 号会员,加入于 2019-10-17 14:27:02 +08:00
今日活跃度排名 20003
fanck0605 最近回复了
我编写了这样的一段代码,虽然不加 volatile 结果是正确的,但是我仍然不确定 volatile 是否是必要的

![oQJzh6.md.png]( https://z3.ax1x.com/2021/11/29/oQJzh6.md.png)
@shyling
onNext 虽然是顺序调用的, 但需不需要考虑变量不可见 (volatile 关键词) 的问题呢?

毕竟 onNext 并没有保证是在同一条线程运行。
102 天前
回复了 fanck0605 创建的主题 Vue.js Vue 组件 props 改变时,如何阻止多余的 render
调用它们的父组件
export default defineComponent({
components: {},
data() {
return {
lang: 'Vue'
};
},
render() {
console.log('Lang: ' + this.lang);
return (
<div>
<input v-model={this.lang}/>
<div>Lang: {this.lang}</div>
<BlogPost postLang={this.lang}/>
<BlogPostNotUseProps postLang={this.lang}/>
</div>
);
}
});
@Mulancer 可以告知一下这个使用什么 app 查看的呢
2020-07-08 13:27:07 +08:00
回复了 fanck0605 创建的主题 Kotlin Kotlin 如何检测所有 lateinit 的 field 是否初始化
我也是刚写 Kotlin,比较看中 Kotlin 的对空值的处理,还有协程。

@aabbcc112233
如果使用了可空类型,那么以后的调用都要加 `!!`,虽然可以从代码层面控制这些 成员变量 非空,但是这似乎让代码变得不够优雅了。

@holmesabc @dcalsky
这么写的确可以判断单个 成员变量 ,编译时,成员变量 也是固定的,一个一个判断也不是不可以。
但成员变量很多时,写出来的代码似乎就会很冗长。


现在我是这么写的,不知道有没有优化的余地。
```
class Car {

lateinit var field1: String
lateinit var field2: String
lateinit var field3: String
lateinit var name: String
lateinit var color: String

// 这里还有很多成员变量

companion object {
val memberProperties = Car::class.memberProperties

fun parse(text : String): Car {

val car = Car()

// 这里解析一些文本,并初始化 car 的成员变量
// var car.field1 = xxx
// var car.field2 = xxx
// var car.field3 = xxx


// 检测是否都被初始化
for (memberProperty in memberProperties) {
try {
memberProperty.get(car)
} catch (e: UninitializedPropertyAccessException) {
// 抛出异常,保证外部获得的对象,所有变量都被 initialized
throw Exception("${memberProperty.name} is uninitialized! Failed to parse text: $text")
}
}
return car
}
}
}
```
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1565 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 12ms · UTC 17:18 · PVG 01:18 · LAX 09:18 · JFK 12:18
♥ Do have faith in what you're doing.