如何将炽热的DSL转换成常规的Scala代码?
请帮助了解滚烫的DSL是如何转换成常规Scala代码的 例如:如何将炽热的DSL转换成常规的Scala代码?,scala,dsl,scalding,Scala,Dsl,Scalding,请帮助了解滚烫的DSL是如何转换成常规Scala代码的 例如: val fasterBirds = birds.map('speed -> 'doubledSpeed) { speed : Int => speed * 2 } 问题: 我需要遵循哪些约定才能将自己的函数添加到滚烫的map、reduce、groupBy、sort和`scanLeft 如何将“inpFld->”等字段上的表达式转换为Scala代码 翻译器创建了哪些数据结构/功能?在滚烫的源代码中哪里可以找到它们 谢谢
val fasterBirds = birds.map('speed -> 'doubledSpeed) { speed : Int => speed * 2 }
问题:
map、
reduce、groupBy、
sort和`scanLeft谢谢 这是常规的Scala代码。Scala的一个优势在于它的可扩展性。语法允许程序员扩展程序的语法以创建特定于域的语言。这在使用底层库时特别有用 Scala的特定于域的语言不会进行太多的翻译,它允许您将代码的应用推迟到适当的时间。勾号字符(')表示以下字符集是一个内置的符号数据类型。
->
运算符是一种语法糖,可以用逗号的相同方式表示,但在视觉上,它传递了“翻译”或“从这个到那个”的概念
您正在查看的特定于域的语言不会创建结构,尽管它看起来确实创建了一个函子。在本例中,Java虚拟机将其视为一个
Function1[Type,Type]
实例,该实例具有一个apply
方法,该方法接受其参数并返回由提供的代码计算的结果。这是常规Scala代码。Scala的一个优势在于它的可扩展性。语法允许程序员扩展程序的语法以创建特定于域的语言。这在使用底层库时特别有用
Scala的特定于域的语言不会进行太多的翻译,它允许您将代码的应用推迟到适当的时间。勾号字符(')表示以下字符集是一个内置的符号数据类型。->
运算符是一种语法糖,可以用逗号的相同方式表示,但在视觉上,它传递了“翻译”或“从这个到那个”的概念
您正在查看的特定于域的语言不会创建结构,尽管它看起来确实创建了一个函子。在这种情况下,Java虚拟机将其视为一个
Function1[Type,Type]
实例,该实例具有一个apply
方法,该方法接受其参数并返回一个由提供的代码计算的结果。这将有助于查看val fasterBirds=birds.map('speed->'doubledSpeed)需要哪些其他代码{speed:Int=>speed*2}
在Scala中编译时不会出现错误。@om nom nom Scala规范的哪一部分处理使用勾号(')的问题将符号和->运算符表示为语法糖?我在哪里可以了解到这一点?谢谢!您可能需要从头开始。这是一个很好的起点:我知道基本的Scala,谢谢。我问这个表单collection.fun('x->'g){…}
被转换为常规函数调用,参数是如何传递的。我认为fun
应该是一个curried函数,它们应该是一些将参数作为符号传递的机制。我想有人可以给出一个简单的例子,不用担心,我会找到自己。这将有助于了解val fasterBirds=birds.map('speed->'doubledSpeed){speed:Int=>speed*2}
在Scala中编译时不会出现错误。@om nom nom Scala规范的哪一部分处理使用勾号(')的问题将符号和->运算符表示为语法糖?我在哪里可以了解到这一点?谢谢!您可能需要从头开始。这是一个很好的起点:我知道基本的Scala,谢谢。我问这个表单collection.fun('x->'g){…}
被转换为常规函数调用,参数是如何传递的。我认为fun
应该是一个curried函数,它们应该是一些将参数作为符号传递的机制。我想有人可以给出一个简单的例子,不用担心我会发现自己。