小编Ric*_*ver的帖子

如何在 Scala.js 中创建 webworker 代码

如何使用 Scala.js 为 Web Worker 创建代码?查看文档,一切似乎都生成 JavaScript 函数,而不是顶级 JavaScript。新的 Worker 构造函数似乎需要顶级 Javascript,而不是文件中的函数。所以在我的 Scala.js 代码中我有:

var myWorker = new Worker("worker.js");
myWorker.onmessage = (e: scala.scalajs.js.Any) =>
{
  val e1 = e.asInstanceOf[MessageEvent]
  println("Worker message recieved:" -- e1.data.toString)
}
myWorker.postMessage("")
Run Code Online (Sandbox Code Playgroud)

在文件worker.js中我有

self.postMessage("from webworker");
Run Code Online (Sandbox Code Playgroud)

该消息将按预期被拾取并显示在 Web 控制台中。

scala.js

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

Scala:访问Either的常见子类型

CSplit和MapCanvT都是Scala Swing组件的子类型.因此,类型CanvNode始终是Component的子类型.我还没有掌握Scala系列的功能,还有像折叠一样.有没有办法减少这个代码(除了把匹配放在一个函数中)并摆脱那些匹配?

type CanvNode = Either[CSplit, MapCanvT]   

class CSplit(var s1: CanvNode, var s2: CanvNode) extends SplitPane
{         
  topComponent =  s1 match { case Left (s) => s; case Right (s) => s} 
  bottomComponent = s2 match { case Left (s) => s; case Right (s) => s}
Run Code Online (Sandbox Code Playgroud)

以上编译.理想情况下,我只想写:

type CanvNode = Either[CSplit, MapCanvT]   

class CSplit(var s1: CanvNode, var s2: CanvNode) extends SplitPane
{         
  topComponent =  s1
  bottomComponent = s2
Run Code Online (Sandbox Code Playgroud)

但那不会编译.

scala

3
推荐指数
1
解决办法
151
查看次数

为什么Option不从Seq和Set继承?

我有两个问题,但我希望答案交织在一起.所以我正在玩flatMapping不同的参数类型.我得到以下内容:

val s: List[String] = List("f2", "df", "e")     //> s  : List[String] = List(f2, df, e)
val o = s.map(s => if (s.head == 'f')Some(s) else None)
                                              //> o  : List[Option[String]] = List(Some(f2), None, None)
val o1 = s.flatMap(s => if (s.head == 'f')Some(s) else None)
                                              //> o1  : List[String] = List(f2)
val a: Option[String] = Some("Hello")           //> a  : Option[String] = Some(Hello)
val a1 = a.map(s => s.toList)                   //> a1  : Option[List[Char]] = Some(List(H, e, l, l, o))
Run Code Online (Sandbox Code Playgroud)

但 …

inheritance scala scala-collections

3
推荐指数
1
解决办法
154
查看次数

内部类中的Scala本机方法

我有:

class XCClass
{   
  @native protected def createWin(displayPtr: Long, width: Int, height: Int, backGroundColour: Int = white.value,
    borderColour: Int = darkblue.value, borderWidth: Int = 0, xPosn: Int = 0, yPosn: Int = 0): Long
  @native protected def xOpen(): Long  
  System.load("/sdat/projects/prXCpp/Release/libprXCpp.so")  
//Code edited out

  class Window(width: Int, height: Int, backGroundColour: ColourInt = white, borderColour: ColourInt = darkblue,
    borderWidth: Int = 0, xPosn: Int = 0, yPosn: Int = 0)
  {
  val xWinPtr = createWin(xServPtr, width, height, backGroundColour.value, borderColour.value, borderWidth, xPosn, yPosn) …
Run Code Online (Sandbox Code Playgroud)

java-native-interface scala

3
推荐指数
1
解决办法
614
查看次数

gcc和llvm linux关闭函数来自c代码

Linux x86-64与gcc编译和静态链接我有:

#include <sys/reboot.h>

if (str[0] == 'r')
  reboot(0x1234567);
Run Code Online (Sandbox Code Playgroud)

但我似乎无法找到等效函数调用shutdown.如果不同,我也想知道llvm函数.

c linux gcc system-calls llvm-gcc

3
推荐指数
1
解决办法
430
查看次数

在C或C++链接器中是否有任何类型检查?

我正确地说连接器没有进行功能参数检查.它们不检查函数调用的数量或类型,也不检查全局数据引用的类型.所有连接体都是如此吗?

我在x86-64上使用Clang瞄准Linux.链接器是否检查引用是否在正确的段中?或者就链接器而言,外部引用实际上只是一个void*?

我来自高级语言背景C#和Scala,所以对于那些沉浸在低级别世界中的人来说,这似乎是显而易见的.我在汇编程序中编写了几个函数(系统调用),我注意到汇编程序中没有外部函数的参数原型.

上下文:我实际上是在编写一个编译器.目前我的目标是使用汇编程序函数进行系统调用的预处理C .i文件,但替代方案是C++,汇编程序甚至是机器代码,所以我试图权衡成本和收益,特别是类型检查.汇编器/编译器/ 链接器我可以用来检查我自己的程序及其函数原型生成的正确性.

c c++ x86-64 clang

3
推荐指数
1
解决办法
1313
查看次数

Scala:无法从内部类引用中获取外部类成员

我似乎无法从内部类引用中获取外部类成员:

class Outer(st: Int)
{
  val valOut = st
  def f = 4
  class Inner { val x = 5 }
}

object myObj {
val myOut = new Outer(8)
val myIn = new myOut.Inner
val myVal: Int = myIn.valOut//value f is not a member of ... myOut.Inner
val x = myIn.f//value valOut is not a member of ... myOut.Inner
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过这个内部包,并且在eclipse工作表中都不起作用.我在eclipse 3.7.2中使用Scala 2.10.0RC1和Scala插件2.1.0M2

scala inner-classes

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

Scala 如何获得 f 字符串插值的类型安全

Scala 如何在 f 方法字符串插值上获得类型安全。StringContext.f 方法采用 Any 的参数。那么它如何判断是否需要 Int、Double 等:

def f(args: Any*): 字符串

scala string-interpolation

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

方法中的Scala import语句

在方法内部的import语句纯粹是一个编译时构造,与在类外部声明的import语句相同吗?从阅读其他问题我相当肯定它只是一个编译时间构造,但经验告诉我要警惕那些我不是100%肯定的事情.此外,我正在阅读一篇文章,我再也找不到了这篇文章.所以特别是当我在运行时加载类时,我想确保在方法/类中没有带有import语句的微妙问题.

import scala

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

Scala.js:如何在Webworker中访问self

所以我有一个网络工作者:

package pWorker    
import scala.scalajs.js._
import org.scalajs.dom._

object WorkScript extends scala.scalajs.js.JSApp
{
  def main(): Unit =  
  {
    val x = 4
    val y = 8
    val z = x + y
    println("Worker x + y =" -- z.toString)      
  }
}
Run Code Online (Sandbox Code Playgroud)

从主JavaScript线程启动时,worker会根据需要打印到控制台.但我无法找到一种方法来称呼相应的:

self.addEventListener('message', function(e) {}
self.postMessage(e.data);
Run Code Online (Sandbox Code Playgroud)

我会从一个直接的Javascript文件调用.

scala.js

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