31DaysOfKotlin-series 5

本文介绍Kotlin中的操作符重载如何简化代码编写,并演示如何使用操作符重载来增强SpannableStrings的功能。同时,文章还探讨了Kotlin支持的领域特定语言(DSL)以及如何创建简洁易读的DSL。
摘要由CSDN通过智能技术生成
  1. 通过Kotlin的操作符重载可以让你写kotlin变得更快,像Path,Range或者SpannableStrings允许操作符“addition”或者“substraction”等, 你可以实现自己的操作符,比如:

    /** Adds a span to the entire text. **/
    inline operator fun Spannable.plusAssign(span: Any) = 
    	setSpan(span, 0, length, SPAN_INCLUSIVE_EXCLUSIVE)
    
    //Use it like this
    val spannable = "Eureka!!!!".toSpannable()
    spannable += StyleSpan(BOLD) // Make the text bold with +=
    spannable += UnderlineSpan() // Make the text underline with +=
    

    android/android-ktxandroid-ktx - A set of Kotlin extensions for Android app development.github.com

  2. 如果一个class有Utility的方法,请将他们添加到文件的最顶端, 在java中它们被编译成static的方法

    // Define a top-level function that creates a DataBinding Adapter for a RecyclerView
    @BindingAdapter("userItems")
    fun userItems(recyclerView: RecyclerView, list: List<User>?) {
        // update the RecyclerView with the new list
    }
    

    Basic Syntax - Kotlin Programming Languagekotlinlang.org

  3. Android KTX添加了在ViewGroup和SparseArray中添加了iterators(区别Sequences见Series 4)。定义iterator的extensions,需要使用‘operator’关键字。Foreach loops就可以使用extensions

    // Example from Android KTX
    for (view in ViewGroup) {}
    for (key in sparseArray.keyIterator()) {}
    
    // Your project
    // add an iterator to a Waterfall
    operator fun Waterfall.iterator() = // ... extend waterfall to have iterator
    for (items in waterfall) {} // now waterfall can iterate!
    

    android/android-ktxandroid-ktx - A set of Kotlin extensions for Android app development.github.com

  4. Android使用KTX的Content Values可以让Kotlin写起来更加的简洁,也可以传入"Pair StringKey, Value>参数。

    val contentValues = contentValuesOf(
        "KEY_INT" to 1, 
        "KEY_LONG" to 2L,
        "KEY_BOOLEAN" to true,
        "KEY_NULL" to null
    )
    

    android/android-ktxandroid-ktx - A set of Kotlin extensions for Android app development.github.com

  5. Kotlin还支持Domain Specific Language

    html {
        head {
            title {+"This is Kotlin!"}
        }
        body {
            h1 {+"A DSL defined in Kotlin!"}
            p {+"It's rather"
            	b {+"bold."}
               + "don't you think?"
            }
        }
    }
    

    Type-Safe Builders - Kotlin Programming Languagekotlinlang.org

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值