コード量を3倍に減らします!kotlinを使ったAndroid開発(二)--秘訣!拡張関数

4519 ワード

本文は前の文章を受け継ぎます:あなたのコードの量を3倍減らします!kotlinを使用してAndroid(一)を開発しKotlinプロジェクトを作成する
本文はブロガーのプライベートブログwingの地方酒場から同期します
前節では、kotlinはgetter、setter、findviewbyidを省くことができ、多くのコードが除去されていることがわかります.本編では、関数拡張という秘訣をお届けします.
関数の拡張は何なのか、一般的には、私たちはクラスを拡張して、継承して実現する必要がありますが、このようにNマルチコードを書く必要があります~~タイトルは、kotlinはあなたのコード量を少なくとも3倍減らすことができます!信じない?早く見に来て!
まずレイアウトのTextViewをButtonに変更しましょう
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.wingsofts.kotlindemo.MainActivity"
>

<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
/>
</RelativeLayout>

私たちがこのような効果を実現すると仮定して、MainActivityでボタンをクリックしてToastをポップアップします.Javaコードなら、みんな軽自動車で慣れてるんでしょうね~~
Button button = findviewbyid(R.id.button)
button.setOnClickListener(new View.OnClickListener() {
      @Override public void onClick(View v) {
        Toast.makeText(this,"hello java",Toast.LENGTH_SHORT);
      }
    });

大きな塊じゃないか!!!ASはコードを生成できますが、やはり肥大化していますね.何?太ってないの?私がkotlinで彼にナイフを撃ったのを見てください.
    button.setOnClickListener {toast("hello kotlin")}

锵锵~あなたは間違っていません.上の大きな塊がこの言葉になった.これはどのように実現したのでしょうか.早く私と一緒に一歩一歩簡略化してください.
findviewbyidを削除
前に言ったように、idを直接書けばコントロールがもらえる~~だからfindviewbyidという言葉は省きました.
リスナーの追加
私たちは直接lambdaを使うことができます.だから、このように書くことができます.
    button.setOnClickListener { v:View -> Toast.makeText(this,"hello lambda",Toast.LENGTH_SHORT).show() }

Lambdaが不慣れな場合は、早くGoogleに行って使い方を教えてくださいね~次は、lambdaの左値パラメータが使われていなければ省略できますので、今書きました

    button.setOnClickListener {

     Toast.makeText(this,"hello lambda",Toast.LENGTH_SHORT).show()

    }

ええ.まだ少し多いようですね.焦らないで、秘籍が来た!
関数の拡張
関数拡張により、継承などの複雑な操作を行わずに任意のクラスを拡張できます.栗をあげろ!Toastで言えば、あちこちで使えます.extという名前のktファイルを新規作成し、次のコードを書きます.
fun Context.toast(message:String,length : Int = Toast.LENGTH_SHORT){ Toast.makeText(this,message,length) }

そうだ!そうですね.この文を加えると、すべてのContextタイプでtoastという関数を使うことができます.
具体的な文法はfun+タイプです.関数(パラメータ)
このブレークコードは、任意のコンパイル可能なファイルに書くことができます.classの内部に書くと、ローカルに有効になります.
2番目のパラメータを見てみましょう.デフォルト値を与えることができます.パラメータが伝わらない場合、自動的にデフォルト値を呼び出します.これは何ですか.みんな考えてみろ、間違いない!!重荷だ!!!つまり最終簡略化版はボタンをクリックしてtoastを弾いて、コードは1行です!
    button.setOnClickListener {toast("hello kotlin")}

もっとcoolはできないと思いますが、どう思いますか?
本文はこれで终わります(文字が短すぎるのが嫌ですか?焦らないで、先に実践してください...シリーズの文章は、穴を掘った以上、もっと引きずらないでしょう.)
Android開発者ならwingのバー:425983695で開発経験を共有することもできますよ
Kotlinを使用して開発された完全なプロジェクトアドレス