小编om-*_*nom的帖子

重定向后关闭OAuth 2.0弹出窗口

我在弹出窗口中将用户重定向到OAuth 2.0授权端点.在OAuth 2.0授权服务器使用授权代码重定向用户后,关闭此弹出窗口并刷新主窗口的最佳方法是什么?

在此先感谢您的帮助.

oauth oauth-2.0

23
推荐指数
1
解决办法
1万
查看次数

如何获取有关"功能"标志警告的更多信息?

使用Play2编译应用程序时,有时这些消息会出现在我的终端上:

[info]将1个Scala源编译为〜/ target/scala-2.10/classes ...
[warn]有1个功能警告; 重新运行-feature以获取详细信息
[警告]发现一个警告
[成功]编译为1s

如何获得有关这些警告的更多信息?它必须是sbt的一个选项,但我不知道在哪里搜索...

java scala sbt scala-2.10 playframework-2.0

23
推荐指数
1
解决办法
7145
查看次数

scala编译器阶段的顺序是什么?

我想要提高我对scala编译阶段的描述.我知道某些事情必须在编译器中发生,但实际上并不知道它们发生的顺序以及顺序如何影响我的编程.

我是否正确地说以下内容是编译器的完整列表?

  • 解析程序
  • 检查类型
  • 擦除
  • 隐式转换
  • 生成字节码
  • 优化

如果是这样,那么这些阶段的顺序是什么?这个命令如何影响程序员,尤其是类型级程序员?

compiler-construction scala scalac

22
推荐指数
2
解决办法
3879
查看次数

为什么我在一个案例中获得"扩展函数的缺失参数"而不是另一个案例?

这种情况有效:

Seq(fromDir, toDir) find (!_.isDirectory) foreach (println(_))
Run Code Online (Sandbox Code Playgroud)

然而,这不是:

Seq(fromDir, toDir) find (!_.isDirectory) foreach (throw new Exception(_.toString))
Run Code Online (Sandbox Code Playgroud)

编译以此错误结束:

error: missing parameter type for expanded function ((x$4) => x$4.toString)
Run Code Online (Sandbox Code Playgroud)

现在,如果我这样写它再次编译:

Seq(fromDir, toDir) find (!_.isDirectory) foreach (s => throw new Exception(s.toString))
Run Code Online (Sandbox Code Playgroud)

我相信有合理的解释;)

scala

22
推荐指数
2
解决办法
2万
查看次数

如何在Scala中的List中找到最大值的索引?

对于Scala List [Int],我可以调用max方法来查找最大元素值.

如何找到最大元素的索引?

这就是我现在正在做的事情:

val max = list.max 
val index = list.indexOf(max)
Run Code Online (Sandbox Code Playgroud)

indexing scala max scala-collections

21
推荐指数
2
解决办法
1万
查看次数

我可以在C++类中使用`abstract`关键字

我们可以在C++类中编写抽象关键字吗?

c++ keyword

20
推荐指数
6
解决办法
2万
查看次数

关闭Input/OutputStream和直接关闭Socket有什么区别?

我只是想知道当我们在inputStream上调用close并使用与套接字关联的outStream时java会做什么.与套接字上的close调用有什么区别,即Socket.close().

如果我们只关闭套接字上的io流,但不关闭套接字,我们可以再次重新打开套接字上的io流吗?

提前致谢!

java sockets

20
推荐指数
2
解决办法
2万
查看次数

Scala:构造函数采用Seq或varargs

我猜测,出于兼容性原因,vararg参数的类型Any*是Array [Any] - 如果我错了,请更正.但是,这并不能解释以下错误:

class Api(api_url: String, params: Seq[(String, String)]) {
  def this(api_url: String, params: (String, String)*)
    = this(api_url, params.seq)
}
Run Code Online (Sandbox Code Playgroud)

此代码无法编译,但会发出警告:

double definition:构造函数Api:(api_url:String,params:(String,String)*)Api和构造函数Api:(api_url:String,params:Seq [(String,String)])第13行的Api在擦除后具有相同的类型:(api_url:java.lang.String,params:Seq)Api

那么如何定义一个采用varargs或序列的构造函数呢?

constructor types scala variadic-functions

20
推荐指数
2
解决办法
1万
查看次数

是否有任何基本限制阻止Scala在函数上实现模式匹配?

在像SML,Erlang这样的语言中,我们可以定义这样的函数:

fun reverse [] = []
|   reverse x :: xs  = reverse xs @ [x];
Run Code Online (Sandbox Code Playgroud)

我知道我们可以像这样在Scala中编写模拟(我知道,下面的代码中有很多缺陷):

def reverse[T](lst: List[T]): List[T] = lst match {
  case Nil     => Nil
  case x :: xs => reverse(xs) ++ List(x)
}
Run Code Online (Sandbox Code Playgroud)

但我想知道,如果我们可以在Scala中编写前代码,也许可以放弃后者.

这种语法在未来是否有任何基本限制(我的意思是,真的很基础 - 例如类型推断在scala中的工作方式,或者除了解析器之外的其他东西)?

UPD
以下是它的外观片段:

type T
def reverse(Nil: List[T]) = Nil
def reverse(x :: xs: List[T]): List[T] = reverse(xs) ++ List(x)
Run Code Online (Sandbox Code Playgroud)

syntax functional-programming scala pattern-matching

20
推荐指数
2
解决办法
571
查看次数

Scala - Mutable线程安全集合

我需要一个可变线程安全Map和Scala中的一个可变线程安全List.我知道默认情况下不可变集合是线程安全的.但是,我需要经常更新我的集合,因为我不能使用不可变的.此外,我需要我的线程安全可变Map来维护插入顺序.

现在我正在使用下面的地图

val map = scala.collection.mutable.LinkedHashMap[String,Any]()
Run Code Online (Sandbox Code Playgroud)

此映射维护插入顺序并且是可变的.如何使其线程安全?

collections multithreading scala map thread-safety

19
推荐指数
2
解决办法
2万
查看次数