Don't wanna be here? Send us removal request.
Text
Learn the Basics of Kotlin ~~ep2~
Introduction
Infix Function:中置記法(ちゅうちきほう)
infix 意味:中に置く 参考サイト:【Kotlin入門】関数定義〜中置記法「infix」を使ってみる
Intという既にあるデータ型に機能を付加する indix fun Int.times(str: String) = str.repeat(this) println(2.times(“Bye “)) //this = 2、2はint型 println(2 times “Bye “) // “.”と”()”を省略した記法
string型の中置記法 infix fun String.onto(other: String) = Pair(this, other) val myPair1 = “Shizuka”.onto(“Shiho”) //this = ”Shizuka”, other = “Shiho” val myPair2 = “Julia” onto “Sayoko” // “.”と”()”を省略した記法
classのメソッドでも機能する。
演算子の拡張(オーバーロード)
参考動画:C++10.演算子のオーバーロード 参考サイト:【Android】 Kotlin演算子オーバロードまとめ 古いけど
演算子に機能を追加する(多重定義) 各演算子には対応するメソッドが存在するため、それを用いる。
a * bをオーバーロードしたい場合はa.times(b)を用いる operator fun Int.times(str: String) = str.repeat(this) println(2 * “Buy ”)
なので理論上はa+b(a.plus(b))でもこの機能は定義できる(やめたほうがいいけど) operator fun Int.plus(str: String) = str.repeat(this) println(2 * “Buy ”)
varargパラメータ付きの関数:可変長引数
fun printAll(vararg messages: String) { for (m in messages) println(m) } printAll("Hello", "Hallo", "Salut", "Hola", "你好")
配列に格納してから渡す必要はない。 varargは単なる配列 逆に配列をvarargに渡す場合は、スプレッド演算子*を使用する
変数
強力な型推論があり、通常は型指定しなくて良い
不変性を強要しておらず、通常はvarよりもvalを使用する
例)Int型を指定 var a:Int = 1;
ヌルセーフティ
通常変数にNullを代入できない。 Nullにできる変数が欲しい場合は”?”を用いる 例) var a:String? = Null;
ジェネリクス
汎用的な型。総称型とも呼ばれ、型をパラメータとすることを可能としたもの。 一般的にのように<>の部分がGenericsとなる。汎用的なクラスや、実装上での制約をかけたい時に活用できる。 インスタンス生成時に保存する型を定義できたりする 今更聞けないKotlin Generics入門 正直まだ良く分からん。
継承
クラスもメソッドもデフォルトでfinal
0 notes
Text
Learn the Basics of Kotlin ~~ep1~
An Absolute Beginner’s Guide to Kotlinを進めた
Variables 変数
可変
varキーワードを使用する。型指定(type引数)は省略できる。
var greeting: String = “Hello World!” var greeting = “Hello World!”
不変
valキーワードを使用する
val greeting = “Hello Kotlin”
文字列:String型
文字列の連結 +演算子を使用する
val language = "Kotlin" val creator = "JetBrains" val description = language + " is created by " + creator
変数の前に$を付けると二重引用符で囲まれた変数を使用できる。
val releaseDate = “20110701” val releaseString = “Kotlinは$releaseDateでリリースされました”
数字
主な数値タイプ
int 整数 32bit
long 整数 64bit
float 浮動小数点 32bit
double 浮動小数点 64bit
val num1 = 42 //int val num2 = 3.14 //double val num3 = 42L //long val num4 = 3.14f //float
toType関数を使用して型変換が可能
val num1 = 42.toFloat() //float val num2 = num1.toDouble() //double
アンダースコアをもちいて数値を読みやすくできる
val distToMoon = 92_960_000 //miles(inferred type int)
booleans
true or false. 他と変わらん
Nullability(Null安全):まだよくわからん
null:何とも等しくない。Nullを原則許容しない仕組みのことを指す。 Null安全についての記事:【Null安全】Kotlin Java比較メモ 正しいNull安全の使い方
val x: Int // Error - variable must be initialized val x: Int = null // Error - null cannot be a value for non-null type Int val x: Int? = null // OK val y: String = null // Error - null cannot be a value for non-null type String val y: String? = null // OK
Null値の処理に役立つ演算子 nullの長さを返そうとしてエラー
val name: String? = null println(name.length) // Error - Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type String?
?を用いるとnullを返すからOK
val name: String? = null println(name?.length) // prints “null”
null許容変数をnullにできないことが確実に分かっている場合は!!を使用する
var name: String? = null name = "Treehouse" println(name!!.length) // prints "9"
Collections
配列 リスト マップ
Arrays 配列 arrayOf関数を使用する
val cardNames: Array = arrayOf(“Jack”, “Queen”, “King”) val cardNames = arrayOf(“Jack”, “Queen”, “King”) //型指定の省略cardNames[0] = “Ace”
配列は固定サイズなため、追加・削除する方法はない。 コレクションのアイテムを追加・削除したい場合はlistを使用する。
list リスト
listとmutablelistがある list:ほぼarray mutablelist:アイテムの変更・追加・削除が可能。mutableListOf関数を使用
val cards = mutableListOf(“Jack”, “Queen”, “King) mutableListのオプション cards.add(“Ace”) cards.remove(“Jack”) cards.clear() //empty list card.addAll(“Jack”, “Queen”, “King”)
maps マップ
mapとmultableMapがある。これはlistと同じ感じ。 キーと値のペアを保存
val cards = mapOf(“Jack” to 11, “Queen” to 12, “King” to 13) val jackValue = cards[“Jack”] // 11
値を追加したい場合など
val cards = mutableMapOf(“Jack” to 11, “Queen” to 12, “King” to 13) cards[“Ace”] = 1
toMutableMap関数を使用して、マップをMutableMapに変換することもできる。
val cards = mapOf("Jack" to 11, "Queen" to 12, "King" to 13) val mutableCards = cards.toMutableMap()
Control Flow
Looping ループ処理 forループ whileループがある
for文
foreach文 配列を表示
for (card in cards) { println(card) }
例 i = 1から10
for(i in 1..10){ println(i) }
例 i = 10から1 downTo演算子を用いる
for(i in 10 downTo 1){ println(i) }
mapを表示
val cards = mapOf(“Jack” to 11, “Queen” to 12, “King” to 13) for ((name, value) in cards){ println(“$name, $value”) }
while文 他と同じで!falseの間はループ
while (stillDownloading) { println(“Downloading…”) }
if Expression if文
基本的には他と似てる if文を使用した変数の定義。1行のみの場合は{}は省略可能
val aIsBigger = if (a > b){ true } else { false } val aIsBigger = if (a > b) true else false
When Expression
switch的なやつらしい。kotlinではswitch文じゃなくてwhenを使う。
when (cardInt) { 11 -> println(“jack”) 12 -> println(“queen”) 13 -> println(“king”) }
if文と同様に変数の定義にも使える。else必須
val cardName = when (cardInt) { 11 -> println(“jack”) 12 -> println(“queen”) 13 -> println(“king”) else -> “Other” }
Functions 関数
funキーワードを用いる。楽しそう。
fun printJack(){ println(“Jack”) }
引数あり
fun printCard(cardName: String, cardValue: Int){ println(“$cardName = $cardValue”) }
返り値あり
fun getCardString(cardName: String, cardValue: Int): String{ return (“$cardName = $cardValue”) }
中身がreturnのみの場合は省略して駆ける。返り値の型指定も省略できる。
fun getCardString(cardName: String, cardValue: Int): String = “$cardName = $cardValue” fun getCardString(cardName: String, cardValue: Int) = "$cardName = $cardValue"
参考サイト:An Absolute Beginner’s Guide to Kotlin
0 notes