Guild icon
swift-developers-japan
開発環境, ライブラリ / skip
Avatar
かっくん 3/18/2025 1:01 PM
せっかく作ってもらったので記事書いたのを投稿しておきます https://zenn.dev/fromkk/articles/0e0982646f7cd7
❤️ 2
Avatar
Avatar
かっくん
せっかく作ってもらったので記事書いたのを投稿しておきます https://zenn.dev/fromkk/articles/0e0982646f7cd7
SkipのSlackコミュニティでiOSとAndroidで挙動が変わるパターンの解決方法を教えてもらったので追記しました
Avatar
@かっくん Skipのトランスパイルモードってこういうのどうなるんですか? var a = [1, 2, 3] var b = a b[0] = 99 print(a) // Swiftではaとbは別なので [1, 2, 3] // Kotlinではaとbは共有されて [99, 2, 3] だったりする?
Avatar
Avatar
omochimetaru
@かっくん Skipのトランスパイルモードってこういうのどうなるんですか? var a = [1, 2, 3] var b = a b[0] = 99 print(a) // Swiftではaとbは別なので [1, 2, 3] // Kotlinではaとbは共有されて [99, 2, 3] だったりする?
Swift var a = [1, 2, 3] var b = a b[0] = 99 logger.info("a \(a) b \(b)")
a [1, 2, 3] b [99, 2, 3]
Kotlin var a = arrayOf(1, 2, 3) var b = a.sref() b[0] = 99 logger.info("a ${a} b ${b}")
a 1, 2, 3 b 99, 2, 3
という感じで srefというのが生えていて同じ挙動をするようになってるみたいです https://github.com/skiptools/skip-lib/blob/0c37176484511bb3373cac016609806c2b4b4d00/Sources/SkipLib/Skip/Struct.kt#L30-L47
Standard Library for Skip apps. Contribute to skiptools/skip-lib development by creating an account on GitHub.
Avatar
おお。参照型の振る舞いを値型に寄せるよう頑張ってますね
t_waiwai 1
🫶 1
Avatar
The transpiler inserts calls to this function whenever a struct copy may be required to maintain value semantics
12:53 AM
お〜 コピーを見つけてクローンするんですね
💪 1
Avatar
omochimetaru 3/19/2025 1:06 AM
値のコピーは関数引数に渡す時と返り値で投げる時もあるけど、前者はmutationが起きるのはinoutの場合だけかな プロパティに代入する時と、プロパティからreturnする時も防御的コピーが差し込まれるんだろうか
1:06 AM
代入は同じ = 式だからされそうだ
Exported 9 message(s)
Timezone: UTC+0