Create complex data from Strings in Scala
我已经定义了很多case类比如
允许我创建复杂的数据,例如,
1
|
val x = FooBar (Bar (“1”), Baz (Bar (“2”)))
|
我想从字符串中读取这些类型的数据,比如
1
|
val x = what _to _do _here ?(“FooBar(Bar(“1“), Baz(Bar(“2“)))”)
|
在动态语言中,我只会调用 eval。
(编辑:我真的不想在 scala 中调用类似 eval 的东西)
我在 scala 中提出的解决方案是编写一个解析器。有没有更简单的方法来做到这一点?
- 相关:stackoverflow.com/questions/1183645/eval-in-scala
您假设存在一个与 toString 对称的构造。我很确定没有。
由于您正在讨论的是一个经典的序列化/反序列化方案,您可能想要研究一个序列化库(想到的一种可能性是 lift-json,我已经取得了相当大的成功,但是当然有替代品)。要么,要么我完全错过了你的使用场景:-)
- 这确实是一个反序列化方案。但是,我无法控制序列化的输出(因为我不拥有代码),因此不能选择使用库。我想我得写一个小解析器
-
正如您所建议的,您可以通过集成 Scala REPL 来模拟它,但我不推荐它。一个简单的解析器将更容易实现并且更不容易出错(假设一组合理的类)。
您可以使用 scala 解释器来编写您自己的 eval 函数。由于解释器实际上是一个编译器,我认为这不会很快。
来源:https://www.codenong.com/7564194/
微信公众号
手机浏览(小程序)
Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in
/mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line
57
Warning: get_headers(): Failed to enable crypto in
/mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line
57
Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_8963.jpg): failed to open stream: operation failed in
/mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line
57