【Kotlin】ラムダ式【やってみた】

ラムダ式Javaのとき昔学んだけど、今回はKotlinで復習してみる。

 

ラムダ式は簡単に言うと無名関数?かも。

とにかく、パラメタを受け取ることができて簡単に記述できるもの。

ラムダ式を変数に格納したら、通常の関数のように呼び出すことができる。

 

基本書式↓

{ 引数 -> 関数本体や処理内容 }

{ }内がラムダ式と判断される。->を使い、左側に無名関数が受け取る変数名(引数)を書き、右側に関数が返す値(関数の本体)を書く。

Ex)

 val sum = { x: Int, y: Int -> x + y }

     println(sum(1, 2))   // 3

 

 

 

 

 

【Kotlin】Android developers公式の学習コース④(デバッグ)【やってみた】

 

Android アプリでは、Log クラスを使用し出力をログに記録する方法がある。

出力をログに記録する関数は以下がある↓

Log.v()

Log.d()

Log.i()

Log.w()

Log.e()

これらのメソッドには 2 つのパラメタがある。

1つ目は「タグ」といい、ログメッセージのソースを識別する文字列(テキストをログに記録したクラス名とか)

2 つ目は実際のログメッセージ。

 

★ログの使用開始手順↓

①MainActivity.kt でクラス宣言の前にTAGという定数を追加し、その値をクラス名 MainActivityする

private const val TAG = "MainActivity"

 

②MainActivityクラスにlogging() という新しい関数を追加

fun logging() {
Log.v(TAG, "Hello, world!")
}

 

③onCreate()メソッド内でlogging()を呼び出す

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
logging()
}

 

④アプリを実行して実際のログを確認。ログは画面下部 [Logcat] ウィンドウに表示。

 

※ログタグは通常、クラスの外で宣言される。この変数は MainActivity の外で宣言されるのに非公開として宣言されるからMainActivity.kt でしかアクセスできない。だから、他のクラスでもTAG 変数を宣言できる

 

 

 

【Kotlin】Android developers公式の学習コース③(単体テスト)【やってみた】

単体テスト

 

単体テストは常にtestディレクトリにある。

公式には以下説明があったけどよくわかんなかった・・

「app/build.gradle ファイルを開き、依存関係を確認する」

まずapp/build.gradle が見つからなかったw

 

ExampleUnitTest.ktの中にはExampleUnitTestクラスがある。中身はこれ↓

class ExampleUnitTest {
    @Test
    fun addition_isCorrect() {
        assertEquals(4, 2 + 2)
    }
}

※assertEquals()メソッドは 2 つのパラメタ(期待値と実際値)を取る。

 

 

単体テストの実行

addition_isCorrect()メソッド宣言の横にある矢印(行番号のすぐ横の緑のやつ)をクリックし[Run ‘ExampleUnitTest.addition_isCorrect'] を選択して実行。

 

 

 

単体テストの作成

@Testアノテーションをつける。アノテーション宣言(インポート)も忘れずに↓ 

import org.junit.Test

※ctrl + Enterでサジェスト出る

 

・指定する数値がある数値の範囲内かテストしたい場合はアサーションメソッドは    assertTrue()にする。

ampleUnitTest {
@Test
fun generates_number() {
val dice = Dice(6)
val rollResult = dice.roll()
assertTrue("The value of rollResult was not between 1 and 6", rollResult in 1..6)
}
}

 

※( )の間にカーソルを置きCtrl + Pしたらメソッドが取るパラメタを示すツールチップが 見れる。Condition(条件のBool)は条件式をかく。

 

 

 

 

 

 

 

 

 

 

【Kotlin】Android developers公式の学習コース②【やってみた】

Androidアプリ作成二日目。

今日の収穫↓

 

・使いたい文字列はハードコーディングせずstrings.xmlに登録してから使う。当たり前だけど忘れずに。

([app] > [res] > [values] > strings.xml

 

Ex)

<resources>
    <string name="app_name">Happy Birthday</string> // アプリ名
    <string name="happy_birthday_text">Happy Birthday!</string>
    <string name="signature_text">From Sam.</string>
</resources>

 

<TextView

        android:fontFamily="sans-serif-light"
        android:text="@string/happy_birthday_text"
        android:textColor="@color/black"
        android:textSize="34sp"

/>

※strings.xmlに登録した文字列をレイアウトのとこで取得して使うには

レイアウトのtextに@string/happy_birthday_text指定したらよい。

 

・画像を文字の下に配置したい場合

 Component Tree内のConstraintLayoutにある色んな要素(textViewやimageViewとか)

 の一番上にimageViewを移動させたらよい。

 

 

 

Android Studio の [Resource Manager] を使用すると画像やその他リソースを追加して配置できる

[View] > [Tool Windows] > [Resource Manager] 

・ImageView はアプリ内で画像を表示するための UI 要素
・ImageViews にはアプリを利用しやすくする内容説明を設定するように

・ユーザーに表示するテキストは文字列リソースに抽出(strings.xml)し、他言語への翻訳をしやすくした方がいい

 

Androidでは、main() 関数を呼び出す代わりにアプリ初回起動時に Android システムが MainActivity の onCreate() メソッドを呼び出す

 

・MainActivity.kt クラスを変更して、アプリにインタラクティブな動作を追加できる
・setOnClickListener() を使って Button に on-click リスナーを設定し、Button がクリックされたときの動作を追加できる

 

・IntRange で random() 関数を呼び出し乱数を生成できる((1..6).random())

インスタンスを作成するとき、クラスに値を指定できる。たとえばclass Dice(val numSides: Int) のように指定してから、Dice(6) でインスタンスを作成できる
・関数は値を返せる。関数定義で返されるデータ型を指定し関数本体で return使用して値を返す(例: fun example(): Int { return 5 })

 

・whenを使用すると、値の比較に基づいてコンパクトな形式でコードを実行できる。

 

・setImageResource() を使ってImageView に表示される画像を変更できる
・when式などの制御ステートメントで色んなケースを処理できる。状況に応じて異なる画像を表示したりとか

 

 

 

難しいーーーーー!!!

 

 

 

 

【Kotlin】Android developers公式の学習コース①【やってみた】

今日からAndroid developers公式のKotlin学習コース?を始めてみた!

 

ビデオも結構あったしオンライン上でのKotlin実行環境も用意されててすごい便利だった!

 

今日の収穫↓

 

Android Studioアップデートした

 

・新しいプロジェクト作成した(Birthday Cardのアプリ)

 

・一連の手順を繰り返したい場合repeat()が使える

fun main() {
    printBorder()
}

fun printBorder() {
    repeat(3) {
        print("=")
    } 
}

 

・Layout Editor で Android アプリの UI が作成できる

・アプリの画面に表示されるものは、ほぼすべてが View と考えていい

・TextView は、アプリ内でテキストを表示するための UI 要素

・ConstraintLayout は、他の UI 要素のコンテナ

・Views はConstraintLayout 内で水平方向と垂直方向に制約する必要あり

・余白はView とそれが入ってるコンテナの端との距離を表す

・TextView にはフォント、テキストサイズ、色とかの属性を設定できる

 

 

 

…難しい!!けど楽しい!!

 

 

【Kotlin】paizaラーニングのKotlin体験編②【やってみた】

今日の収穫↓

 

・プログラムの実行時、ターミナルでプログラムの入出力先の指定ができる

 

・入力されたデータが等しいか判定

 equals()を使う。
 a.equals("b") 等しい     変数aは"b"と等しい

 

・Kotlinでのfor文

 カウンター変数 i でカウントし終了条件である 3 まで繰り返し処理をする

 fun main() {
     val greeting = "Hello world"

     for(i in 1 .. 3) {
         println(greeting)
     }
 }

 

・複数行のデータの受け取り

 繰り返し処理の中でreadLine()を使うと、標準入力から1行ずつ複数行のデータを受け           取れる

 

受け取った整数回だけ繰り返す↓

fun main() {
    val count = readLine()!!.toInt() // 回数を標準入力から受け取って表示
    println(count)

 

    val greeting = "Hello world" // ↑で受け取った回数だけ変数greetingで文字列表示
    for (i in 1 .. count) {
        println(greeting)
    }
}

 

 

【Kotlin】paizaラーニングのKotlin体験編①【やってみた】

Androidアプリ開発勉強のためにKotlinを勉強してみようと思う。

 

演習とか無料でできるやつ探したけど、paizaラーニングで体験できるらしいからやってみた。

 

とりあえず今日の収穫↓

 

・val か var で変数を宣言
 val : 一度だけデータを入れられる
 var : 何度もデータを入れられる

 

・変数に文字列を代入

 val greeting:String = "Hello"

 

・変数に整数を代入

 var num:Int = 100

 

型推論

 データの型は宣言を省略できる

 

・整数と文字列の連結

 整数データに文字列を連結する場合はtoString()で文字列に変換してから

 fun main() {
     val price = 100
     println(price.toString() + "円")
 }

 ※逆に、文字列に整数を連結する場合は変換いらない

 

・データの受け取り(文字列)

 readLine()を使う、データを受け取る関数。実行時に渡したデータ(入力タブから)を変       数nameに代入してる↓

 fun main() {
     val name = readLine()
     println("Hello ${name}")
 }

 

 データの受け取り(整数)の場合

 fun main() {
     var num = readLine()!!.toInt()
     println(num + 1)   
 }

 

toInt()で読み取った文字列を数値データに変換。「.」(ドット)で前の関数の結果を受け取り次の関数で処理。

!!は受け取るデータが必ず存在することを指定するものらしい。推奨されない書き方らしいけど消したらエラーになった。