Skip to content

Instantly share code, notes, and snippets.

View ezura's full-sized avatar

Yuka Ezura ezura

View GitHub Profile
@ezura
ezura / kotlin_if_when.kt
Last active June 19, 2017 05:45
kotlin_if_when
/*
if, when(switch) が式
*/
@ezura
ezura / CodePiece.kt
Created June 18, 2017 12:39
Nothing は全ての型サブタイプ && `interface List<out E>` だからこの `emptyList` の実装できるのかな (。 ・ω・)) #CodePiece #kotlin
fun <T> listOf(vararg elements: T): List<T> = if (elements.size > 0) elements.asList() else emptyList()
fun <T> emptyList(): List<T> = EmptyList
object EmptyList : List<Nothing>
@ezura
ezura / kotlin_list.kt
Created June 18, 2017 09:34
mutable は共変じゃなくなってる。うん、そうだよね…
interface List<out E> : Collection<E>
interface MutableList<E> : List<E>, MutableCollection<E>
@ezura
ezura / kotlin_nothing_list
Created June 18, 2017 09:19
nothing が全てのサブタイプなので List<Nothing> がはいる
fun <T> listOf(vararg elements: T): List<T> = if (elements.size > 0) elements.asList() else emptyList()
fun <T> emptyList(): List<T> = EmptyList
object EmptyList : List<Nothing>
@ezura
ezura / kotlin_032
Last active June 18, 2017 09:12
整数リテラルは Int になる。*literalConvertible 的なものはない?暗黙的型変換がないとのこと。型変換するときはメソッドを使う。Swift と違い、変換元の方が変換の責任を持っているように見える。
val i: Double = 1 // 型 error
val i_: Double = 1.toDouble()
@ezura
ezura / CodePiece.swift
Created June 17, 2017 15:07
(´・ω・`)? #swift #CodePiece
let gV = 1
func f1() -> Never {
var v = 1
while true {
if false { break }
if true { /* v = 2 */ } else { break }
if 1 < 0 { break }
if v < 0 { break }
// if gV < 0 { break } // ❌
if true { v = 0 } else { break } // ❌
@ezura
ezura / CodePiece.swift
Created June 17, 2017 15:05
コンパイルチャレンジ ( ˘ω˘) #swift #CodePiece
let gV = 1
func f1() -> Never {
var v = 1
while true {
if false { break }
if true { v = 2 } else { break }
if 1 < 0 { break }
if v < 0 { break }
// if gV < 0 { break } // ❌
if true { v = 0 } else { break }
@ezura
ezura / CodePiece.swift
Created June 17, 2017 14:20
f2 も返り値は Never みたいに見える… #swift #CodePiece
func f1() -> Never {
while true { }
}
func f2() -> Int {
while true { }
}
@ezura
ezura / CodePiece.swift
Created June 17, 2017 14:17
無限ループ認識してくれてるのね…(。 ・ω・)) #swift #CodePiece
func f() -> Never {
while true { }
}