Skip to content

Scala 与 DSL #10

@zhongl

Description

@zhongl

最早结识DSL, 还是因为看了Martin Flower的一篇文章叫FluentInterface, 它真正让我明白原来代码也可以这样美的.

TimeInterval meetingTime = fiveOClock.until(sixOClock);

注意, 本文中提到的DSL被狭义的等同于了Internal DSL. 言外之意, 它还有External的部分. 关于DSL更全面的内容, 还请参阅Martin Flower的专著.

以至于后来我爱上写单元测试, 很大程度要归功于mockitoDSL应用上的如火纯青.

尽管jMock要早于mockito, 而我个人却更喜欢后者.

在自己尝试着用Java写DSL的时候, 那永远摆脱不掉的.(), 总让我纠结不已, 当然, 这只是个人洁癖而已.

Scala在实现DSL是很有优势的, 这在combinator.Parsers中已表明了这点, 而且在Programming Scala一书中, 作者专门用一个章节来讨论.

值得强调的是, 阻碍我们设计实现DSL的是我们自己的想象力, 而不应该是一门语言的表现力.

在此引出本文的目的: 大家来聊聊你用Scala写过的哪些DSL?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions