小编Bef*_*rem的帖子

在Scala的模式匹配系统中使用比较运算符

是否可以使用Scala中的模式匹配系统进行比较?例如:

a match {
    case 10 => println("ten")
    case _ > 10 => println("greater than ten")
    case _ => println("less than ten")
}
Run Code Online (Sandbox Code Playgroud)

第二个案例陈述是非法的,但我希望能够指定"当a大于"时.

scala pattern-matching

147
推荐指数
3
解决办法
7万
查看次数

在Scala中迭代Java集合

我正在编写一些使用Apache POI API的Scala代码.我想迭代java.util.Iterator我从Sheet类中获得的行.我想在for each样式循环中使用迭代器,所以我一直在尝试将其转换为原生的Scala集合,但没有运气.

我查看了Scala包装器类/特性,但我看不出如何正确使用它们.如何在不使用详细while(hasNext()) getNext()循环样式的情况下迭代Scala中的Java集合?

这是我根据正确答案编写的代码:

class IteratorWrapper[A](iter:java.util.Iterator[A])
{
    def foreach(f: A => Unit): Unit = {
        while(iter.hasNext){
          f(iter.next)
        }
    }
}

object SpreadsheetParser extends Application
{
    implicit def iteratorToWrapper[T](iter:java.util.Iterator[T]):IteratorWrapper[T] = new IteratorWrapper[T](iter)

    override def main(args:Array[String]):Unit =
    {
        val ios = new FileInputStream("assets/data.xls")
        val workbook = new HSSFWorkbook(ios)
        var sheet = workbook.getSheetAt(0)
        var rows = sheet.rowIterator()

        for (val row <- rows){
            println(row)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java collections scala scala-java-interop

111
推荐指数
7
解决办法
8万
查看次数

伪造RS232串口

我正在开发一个项目,其中有许多硬件传感器通过RS232串口连接到部署机器.

但是......我正在开发一台没有物理RS232串口的机器,但是我想制作一些可以连接的假串口,并输出数据,目的是伪造硬件传感器的输入.

有谁知道在Windows XP上创建假串口并控制它的方法?

windows serial-port virtual-serial-port mocking hardware-interface

76
推荐指数
4
解决办法
11万
查看次数

从String Scala的末尾删除字符

从Scala中的String末尾删除最后一个字符的最简单方法是什么?

我发现Rubys String类有一些非常有用的方法,比如chop.我会在Scala中使用"oddoneoutz".headOption,但它是折旧的.我不想陷入过于复杂的境地:

string.slice(0, string.length - 1)
Run Code Online (Sandbox Code Playgroud)

请有人告诉我有一个很好的简单方法,如剁这种常见的东西.

string scala

70
推荐指数
4
解决办法
6万
查看次数

你能用Ruby开发原生的iPhone应用程序吗?

嗨,我正在研究iPhone开发,而Objective-C不是我的首选语言.据我所知,目前Ruby还不能用于与iPhone上的Cocoa Touch交谈.

所以我的问题是,我错了吗?我可以在iPhone上使用Ruby来开发Cocoa Touch应用程序吗?iPhone上的Ruby的未来是什么样的?

ruby iphone cocoa-touch ios

49
推荐指数
6
解决办法
4万
查看次数

将逗号插入数字字符串

嘿那里,我正在尝试对字符串执行向后正则表达式搜索,将其划分为3位数组.从AS3 文档中我可以看到,在reg ex引擎中无法向后搜索.

这个练习的目的是将三元组逗号插入到这样的数字中:

10000000 => 10,000,000
Run Code Online (Sandbox Code Playgroud)

我想这样做:

string.replace(/(\d{3})/g, ",$1")
Run Code Online (Sandbox Code Playgroud)

但这是不正确的,因为搜索没有从后面发生,替换$ 1只适用于第一场比赛.

我感觉我会更好地使用循环执行此任务.

更新:

由于AS3不支持前瞻,这就是我解决它的方法.

public static function formatNumber(number:Number):String
{
    var numString:String = number.toString()
    var result:String = ''

    while (numString.length > 3)
    {
        var chunk:String = numString.substr(-3)
        numString = numString.substr(0, numString.length - 3)
        result = ',' + chunk + result
    }

    if (numString.length > 0)
    {
        result = numString + result
    }

    return result
}
Run Code Online (Sandbox Code Playgroud)

regex actionscript-3

34
推荐指数
3
解决办法
4万
查看次数

在Scala解释器中包含jar文件

是否可以包含运行Scala解释器的jar文件?

当我从scalac编译时,我的代码正在工作:

scalac script.scala -classpath *.jar
Run Code Online (Sandbox Code Playgroud)

但我希望能够在运行解释器时包含一个jar文件.

interpreter scala jar

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

操作方法:在IDE外部调试Scala代码

我正在尝试使用jEdit作为编写Scala代码的主编辑器.

沿着jEdit,我正在使用Apache Buildr和DTerm.这一切都运行良好,除了我真的不确定如何在大型IDE之外调试Scala应用程序?

是否有推荐的实践/工具用于在IDE之外进行调试?

debugging workflow scala

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

Scala XML Building:将子节点添加到现有节点

我有一个XML节点,我希望随着时间的推移添加子节点:

val root: Node = <model></model>
Run Code Online (Sandbox Code Playgroud)

但我看不到像addChild()这样的方法,因为我想写下以下内容:

def addToModel() = {
    root.addChild(<subsection>content</subsection>)
}
Run Code Online (Sandbox Code Playgroud)

因此,在单个调用此方法之后,根xml将是:

<model><subsection>content</subsection></model>
Run Code Online (Sandbox Code Playgroud)

我能看到的唯一可以附加节点的类是NodeBuffer.我错过了一些基本的东西吗?

xml scala

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

仅在C++中使用堆栈的后果

让我们说我认识一个不熟悉C++的人.他没有绕过指针(正确地说是这样),但他拒绝通过引用传递.他总是使用传值.原因是他觉得"通过引用传递物体是一种破碎设计的标志".

该程序是一个小型图形程序,大多数传递的问题是数学Vector(3元组)对象.有一些大的控制器对象,但没有比这复杂.

我发现很难找到一个反对只使用堆栈的杀手论点.

我认为按值传递对于诸如向量之类的小对象是好的,但即使这样,代码中也会发生许多不必要的复制.按值传递大型对象显然是浪费,很可能不是您想要的功能.

在专业方面,我相信堆栈在分配/解除分配内存方面更快,并且具有恒定的分配时间.

我能想到的唯一主要论点是堆栈可能会溢出,但我猜这是不可能发生的?是否有任何其他参数反对仅使用堆栈/传递值而不是通过引用传递?

c++ pass-by-reference pass-by-name

17
推荐指数
5
解决办法
1623
查看次数