DevLog
Python, TypeScript, etc...
MyPage
Python, TypeScript, etc...
2022/07/27

TypeScriptばかり書いている人がKotlinを普通に書けるようになるまでのメモ

Kotlin
preview
@shiromisanta
Frontend Engineer
  •  /
目次
型チェック

型チェック

if (item is String) { println(item) }

配列でループ

// 配列でループ arrayOf(1, 2, 3).forEach { println(it) } // 指定回数ループ repeat(3) { println(it) } // 配列のサイズでループ repeat(arrayOf(1, 2, 3).size) { println(it) }

nullチェック

スマートなnullチェックはイテレータ系の関数と並んで個人的にどの言語でも大切にしているところです。

nullでなければ何かする

val a: String? = null a?.let { println(it) }

デフォルト値を設定

?:はエルビス演算子という。左がnullなら右を実行。

val name = name ?: "default"

nullでなければ普通に代入、nullなら何か実行したい

エルビス演算子の右辺でrunすればエラーを吐いたりできる

var name = name ?: run { println("not found") return }

lateinit

初期値を書かなくて良くなる。

class ResultFragment : Fragment() { private lateinit var viewBinding: FragmentResultBinding override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { viewBinding = FragmentResultBinding.inflate(inflater, container, false) return viewBinding.root }

スコープ関数

↓わかりやすい

https://qiita.com/ngsw_taro/items/d29e3080d9fc8a38691e

今のところlet, runだけ使ってます。

build.gradle

アプリのビルド設定を記述するもの。依存パッケージなどもここに書く。package.jsonみたいなもの

Gradle=ビルドツール。Android開発では標準。

Javaに似たGroovyで書けるのでmaven(xml)より良いとされる。

JVM(Java 仮想マシン)上で動作する。

companion object

companion objectはクラス内に作成されるSingleton。objectと機能は同じ。

class Hoge { object A { val fizz = "fizz" fun foo() { ... } } companion object { val buzz = "buzz" fun bar() { ... } } }

companion objectはこのクラスから呼ぶことが明白なので、オブジェクトより呼び出し方がシンプル

fun main() { // objectの場合。 val fizz = Hoge.A.fizz Hoge.A.foo() // companion objectの場合。 val buzz = Hoge.buzz Hoge.bar() }

関連記事

preview
@shiromisanta 2022/08/18
光学カメラAndroidKotlin
preview
@shiromisanta 2022/07/20
Kotlin
preview
@shiromisanta 2022/07/15
AndroidKotlin
preview
@shiromisanta 2022/07/15
AndroidKotlin
preview
@shiromisanta 2022/07/02
AndroidKotlin
2022/07/27

TypeScriptばかり書いている人がKotlinを普通に書けるようになるまでのメモ

Kotlin

型チェック

if (item is String) { println(item) }

配列でループ

// 配列でループ arrayOf(1, 2, 3).forEach { println(it) } // 指定回数ループ repeat(3) { println(it) } // 配列のサイズでループ repeat(arrayOf(1, 2, 3).size) { println(it) }

nullチェック

スマートなnullチェックはイテレータ系の関数と並んで個人的にどの言語でも大切にしているところです。

nullでなければ何かする

val a: String? = null a?.let { println(it) }

デフォルト値を設定

?:はエルビス演算子という。左がnullなら右を実行。

val name = name ?: "default"

nullでなければ普通に代入、nullなら何か実行したい

エルビス演算子の右辺でrunすればエラーを吐いたりできる

var name = name ?: run { println("not found") return }

lateinit

初期値を書かなくて良くなる。

class ResultFragment : Fragment() { private lateinit var viewBinding: FragmentResultBinding override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { viewBinding = FragmentResultBinding.inflate(inflater, container, false) return viewBinding.root }

スコープ関数

↓わかりやすい

https://qiita.com/ngsw_taro/items/d29e3080d9fc8a38691e

今のところlet, runだけ使ってます。

build.gradle

アプリのビルド設定を記述するもの。依存パッケージなどもここに書く。package.jsonみたいなもの

Gradle=ビルドツール。Android開発では標準。

Javaに似たGroovyで書けるのでmaven(xml)より良いとされる。

JVM(Java 仮想マシン)上で動作する。

companion object

companion objectはクラス内に作成されるSingleton。objectと機能は同じ。

class Hoge { object A { val fizz = "fizz" fun foo() { ... } } companion object { val buzz = "buzz" fun bar() { ... } } }

companion objectはこのクラスから呼ぶことが明白なので、オブジェクトより呼び出し方がシンプル

fun main() { // objectの場合。 val fizz = Hoge.A.fizz Hoge.A.foo() // companion objectの場合。 val buzz = Hoge.buzz Hoge.bar() }

関連記事

preview
@shiromisanta
Frontend Engineer
  •  /
©︎Devlog