1. 程式人生 > 其它 >scala 擴充套件方法學習

scala 擴充套件方法學習

scala 的擴充套件方法很強大,類似C# 提供的擴充套件方法能力,基於scala 的擴充套件方法我們可以方便的開發一個dsl 模型
比如以下就是基於implicit 實現一個簡單的字串轉為自定義任務的處理

參考程式碼

package com.dalongdemo
object DSL  extends  App{
  class Task(name:String) {
    def invoke():Unit ={
      println(s"method is called ${name}")
    }
  }
  implicit class in(string: String) {
    def in(fn: (String)=>String): Task = new Task(fn(string))
  }
  val  task = "dalong" in  {
    case  item => s" demo app ${item}"
  }
  task.invoke()
}

說明

通過以上程式碼我們可以將一個字串轉為一個Task 類,可以用來開發自己的dsl 模型,當然scala 3 的寫法已經簡化了現在的開發模式
以下提供了一些參考資料

參考資料

https://docs.scala-lang.org/tour/implicit-conversions.html


https://docs.scala-lang.org/tour/implicit-parameters.html
https://kubuszok.com/compiled/implicits-type-classes-and-extension-methods/
https://kubuszok.com/2018/implicits-type-classes-and-extension-methods-part-1/
https://kubuszok.com/2018/implicits-type-classes-and-extension-methods-part-2/
https://kubuszok.com/2018/implicits-type-classes-and-extension-methods-part-3/

https://kubuszok.com/2018/implicits-type-classes-and-extension-methods-part-4/
https://blog.rockthejvm.com/scala-3-extension-methods/