小编tks*_*sfz的帖子

什么是Scala相当于Clojure的线程宏?

Clojure有"线程宏" ->->>.我很确定在Scala代码中可以使用类似的构造来替换代码,例如:

var myObj = MyObject(x, y, z)
myObj = transform(myObj, abc)
myObj = transformMore(myObj, def)
myObj = transformYetMore(myObj, bar)
Run Code Online (Sandbox Code Playgroud)

我希望看到一个可行的例子,看看它是否看起来不错.我很确定你不需要在Scala案例中使用宏.

scala clojure

8
推荐指数
1
解决办法
918
查看次数

什么是与Play Framework的Enumerator.fromCallback等效的scalaz-stream

Play Framework的iteratee库定义了一个方法Enumerator.fromCallback,允许根据Future的结果生成元素:

http://www.playframework.com/documentation/2.2.x/Enumerators

def fromCallback[E](
  retriever: () => Future[Option[E]],
  onComplete: () => Unit = () => (),
  onError: (String, Input[E]) => Unit = (_: String, _: Input[E]) => ()
): Enumerator[E]
Run Code Online (Sandbox Code Playgroud)

您可以在此处看到用于从Web服务提供分页结果的一个很好的示例:

http://engineering.klout.com/2013/01/iteratees-in-big-data-at-klout/

def pagingEnumerator(url:String):Enumerator[JsValue]={
  var maybeNextUrl = Some(url) //Next url to fetch
  Enumerator.fromCallback[JsValue] ( retriever = {
    val maybeResponsePromise =
      maybeNextUrl map { nextUrl=>  
        WS.url(nextUrl).get.map { reponse =>
          val json = response.json
          maybeNextUrl = (json \ "next_url").asOpt[String]
          val code = response.status //Potential error handling here
          json
        } …
Run Code Online (Sandbox Code Playgroud)

scala scalaz scalaz-stream

5
推荐指数
1
解决办法
462
查看次数

在Angular-UI中获取状态的"绝对"URL?

我正在使用Angular和Angular-UI ui-router.我有一些定义的状态:

app.config(function ($stateProvider, $urlRouterProvider) {

$stateProvider
    .state('tabs', {
        url: "/tab",
        abstract: true,
        templateUrl: "views/tabs.html"
    })
    .state('tabs.home', {
        url: "/home",
        views: {
            'home-tab': {
                templateUrl: "views/home.html"
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

请注意,我使用的是抽象状态.是否有一个方便的功能,通过名称获取给定状态的URL?例如,我想要类似的东西:

$state.get('tabs.home').absoluteUrl
Run Code Online (Sandbox Code Playgroud)

哪个应该返回一个值#/tab/home.

angularjs angular-ui angular-ui-router

5
推荐指数
1
解决办法
7717
查看次数

在Scala中,是否可以"定义"def的类型参数?

假设我有一个带有多个类型参数的def:

def foo[A, B, C](b: B, c: C)(implicit ev: Writer[A])

但是,预期的用法是类型参数B,C应该推断(基于传入的参数).并且调用者应该只需要A明确指定(例如,具有由编译器选择的适当隐式).不幸的是,Scala只允许调用者指定所有类型参数或不允许任何类型参数.从某种意义上说,我希望咖喱的类型参数:

def foo[A][B, C]...

在Scala中有一些技巧可以实现吗?

(如果我的具体例子没有完全合理,我很乐意通过建议改进它.)

scala currying type-parameter type-level-computation

5
推荐指数
1
解决办法
706
查看次数

如何判断 Java 程序是否在 GraalVM AOT 上下文中运行?

我有一个小 Java 程序。我使用 Graal 构建了一个二进制文件native-image(即 GraalVM AOT 又名 SubstrateVM)。

我的程序可以使用 Java 运行时或本地映像二进制文件执行。判断我正在运行的上下文的最佳方法是什么?

(一般来说,这可能是一种不好的做法,但我相信在某些并不少见的情况下这是不可避免的/必要的。)

graalvm

5
推荐指数
2
解决办法
579
查看次数

如果列表不为空,scala或scalaz中是否有函数将函数应用于列表?

如果列表不为空,scala或scalaz中是否有函数将函数应用于列表.否则它会返回一些默认值.该函数必须应用于列表本身而不是列表的元素.也就是说,它完成以下任务:

implicit class RichList[A, M[A] <: Iterable[A]](list: M[A]) {
  def convertOrElse[B](fn: M[A] => B, whenEmpty: B) = {
    if (!list.isEmpty) fn(list) else whenEmpty
  }
}
Run Code Online (Sandbox Code Playgroud)

用法示例:mylist.convertOrElse("prefix"+ _.mkString(","),"")

我记得在某个地方看过这个,但它可能是在博客文章或其他一些.我现在似乎无法在scalaz中找到它,但我甚至无法在网上找到最新的scalaz文档(这是一个不同的问题:)

正如你所看到的,我已经编写了我自己的隐含,但是我讨厌在适当的scalaz导入可以解决这个问题时添加我自己的含义.

scala scalaz

4
推荐指数
1
解决办法
739
查看次数