Kotlin到Dart的简单翻译器的坑基本上填完了

先上链接:ice1000/Kt2Dart

这是什么?

这是一个使用Kotlin代码并将其转换成Dart的翻译器。

为什么写这个?

因为我想 Make Flutter Great Again

Flutter,用Dart写就,是一个十分漂亮的移动开发框架。但是Dart太弱了,因为它是动态类型的,而且没有null safe。

Kotlin更强大。如果我们能结合漂亮的Flutter与强大/安全的Kotlin,世界就和平了(

另外,由于您的源代码是从Kotlin翻译过去的,您可以使用Sound DartStrong Dart指的是同一个东西)编译器来编译生成的Dart代码。

您可能应该需要使用Kotlin的JavaScript模式(这样您就可以用dynamic类型了)。

局限

Kt2Dart支持功能齐全的Kotlin(因为我根据严格的语法定义写这个解析器),但是我不会支持这些功能:

  • Extensions Labels(label break / continue,label return)
  • import as
  • Anonymous Classes
  • if / when 表达式
  • 类型安全的闭包(dart的闭包类型函数没有范型的)
  • 解构声明({(a:Int,b:Int):Pair <Int,Int> – > xxx})

这些功能不完全支持:

  • 命名(比如System.`in`会被直接转换成 System.in)(链接是识别错误)
  • 泛型(Dart的泛型是协变的)

Kotlin的这种(高级)语言特征太过于复杂(它需要太多的编译期分析,而Kt2Dart只是一个简单的工具)。当检测到这些内容时,这个工具会给出warning,并写在注释里面。

为什么用Haskell

因为 Parser Combinator太好用了(划掉)我想练习我的Haskell技能。

我其实是Haskell的初学者,所以如果你发现任何Naive的代码,请随时告诉我,虽然我用了hlint(

为什么这篇文章看起来这么别扭

因为我只是修改了下谷歌翻译的项目README(

看不懂这篇文章的中文怎么办

ice1000/Kt2Dart

    原文作者:兴趣使然千里冰封
    原文地址: https://zhuanlan.zhihu.com/p/28768451
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞