小编Mik*_*yer的帖子

如何从两个绝对路径(或URL)构建Java中的相对路径?

给出两条绝对路径,例如

/var/data/stuff/xyz.dat
/var/data
Run Code Online (Sandbox Code Playgroud)

如何创建使用第二条路径作为基础的相对路径?在上面的例子中,结果应该是:./stuff/xyz.dat

java url file path

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

Eclipse,Android,Scala变得简单但仍然不起作用

我最近采用了一种使用Scala和Eclipse进行Android编程的方法,它可以在不使用Proguard或Treeshake的情况下减少代码和编译时间.

在本文之后,我应该能够使用最后的Eclipse构建(3.7),几乎是在仿真器版本10上更新的Scala(2.8.1)的最新版本,在Eclipse中的版本2.8.3以及提供的插件.

提出的方法是提供一个特定的ramdisk映像版本,我们可以在其中上传scala库,这会大大缩小要上传到模拟器的代码的大小.

我按照步骤,创建了一个hello world,添加了scala本质,添加了一个虚拟scala类,在Android Package Installer之前移动了Scala构建器,一切都构建完美,但是当我在Eclipse的模拟器上启动apk时,应用程序崩溃了我收到以下错误,看起来与此处提供相同(在文档末尾):

    03-29 10:29:38.505: E/AndroidRuntime(839): java.lang.NoClassDefFoundError: upg.TestSinceInstallation.ComputeSum
Run Code Online (Sandbox Code Playgroud)

如果我删除活动文件中的scala引用,它运行良好.

这是TestSinceInstallation.java文件:

    package upg.TestSinceInstallation;

    import android.app.Activity;
    import android.os.Bundle;
    import upg.TestSinceInstallation.ComputeSum;

    public class TestSinceInstallationActivity extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            int a = 1;
            int b = 5;
            ComputeSum cs = new ComputeSum(a, b);
            if(cs.getResut() == 6) {
              setContentView(R.layout.main);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是ComputeSum.scala文件

    package upg.TestSinceInstallation

    class ComputeSum(a: Int, b: Int) …
Run Code Online (Sandbox Code Playgroud)

eclipse android scala

38
推荐指数
1
解决办法
6163
查看次数

如何在scala中缓存结果?

此页面描述了Map的getOrElseUpdate使用方法:

object WithCache{
  val cacheFun1 = collection.mutable.Map[Int, Int]()
  def fun1(i:Int) = i*i
  def catchedFun1(i:Int) = cacheFun1.getOrElseUpdate(i, fun1(i))
}
Run Code Online (Sandbox Code Playgroud)

因此,您可以使用catchedFun1哪个将检查是否cacheFun1包含与之关联的键和返回值.否则,它将调用fun1,然后缓存fun1结果cacheFun1,然后返回fun1结果.

我可以看到一个潜在的危险 - cacheFun1可能变得很大.所以cacheFun1必须通过垃圾收集器以某种方式清理?

PS怎么样scala.collection.mutable.WeakHashMap and java.lang.ref.*

caching scala

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

这个正则表达式意味着什么 - "\ p {Lu}"?

我在c#中偶然发现了这个正则表达式我想移植到javascript,我不明白以下内容:

[-.\p{Lu}\p{Ll}0-9]+
Run Code Online (Sandbox Code Playgroud)

当然,我遇到困难的部分\p{Lu}.我访问过的所有正则表达式网站都没有提到过这个修饰符.

任何的想法?

javascript c# regex

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

1976年3月28日到3月29日期间发生了什么与java.util.GregorianCalendar?

试图使用GregorianCalendar,我在计算特定日期以来的天数时遇到了奇点.在scala解释器中,我输入了:

scala>import java.util.GregorianCalendar
scala>import java.util.Calendar
scala>val dateToday = new GregorianCalendar(2012,Calendar.MAY,22).getTimeInMillis()
dateToday: Long = 1337637600000
scala>val days1 = (dateToday - (new GregorianCalendar(1976,Calendar.MARCH,28).getTimeInMillis())) / (1000*3600*24)
days1: Long = 13203
scala>val days2 = (dateToday - (new GregorianCalendar(1976,Calendar.MARCH,29).getTimeInMillis())) / (1000*3600*24)
days2: Long = 13203
Run Code Online (Sandbox Code Playgroud)

我不知道1976年是闰年的事实是否重要,但是第1天和第2天本应该被分开1.这是自1970年以来唯一发生这种奇点的时刻.

想知道发生了什么,我计算了之前提到的两个日期之间的差异,它给我的时间差别只有23个小时!那天发生了什么?维基百科显然没有提及它.

更重要的是,如何计算自特定日期以来的实际天数?

java scala date gregorian-calendar long-integer

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

Scala把方法放在特质或案例类?

有两种方法可以为scala中继承相同特征的两个不同类定义方法.

sealed trait Z { def minus: String }
case class A() extends Z { def minus = "a" }
case class B() extends Z { def minus = "b" }
Run Code Online (Sandbox Code Playgroud)

替代方案如下:

sealed trait Z { def minus: String = this match {
    case A() => "a"
    case B() => "b"
}
case class A() extends Z
case class B() extends Z
Run Code Online (Sandbox Code Playgroud)

第一种方法重复方法名称,而第二种方法重复类名称.我认为第一种方法最好使用,因为代码是分开的.但是,我发现自己经常使用第二个方法来处理复杂的方法,因此可以非常容易地添加其他参数,例如:

sealed trait Z {
  def minus(word: Boolean = false): String = this match {
    case A() => …
Run Code Online (Sandbox Code Playgroud)

scala object-oriented-analysis

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

地图展平和平面图不相同

我认为Scala构造map(f).flatten相当于flatMap(f).但是通过这个例子,情况并非如此.我想知道案例类的作用是什么.如果我使用整数,两者都是等价的.但就我而言,我不能.

case class CTest(v: Int)
val s = Set(Map(CTest(0) -> List(0, 3), CTest(1) -> List(0, 2)))
val possibilities = s flatMap { m =>
  val mapping = m flatMap {
    case (label, destNodes) => destNodes map {
      case nodes => (label, nodes) }
  }
  mapping
}
possibilities
Run Code Online (Sandbox Code Playgroud)

产量

Set((CTest(0),3), (CTest(1), 2))
Run Code Online (Sandbox Code Playgroud)

case class CTest(v: Int)
val s = Set(Map(CTest(0) -> List(0, 3), CTest(1) -> List(0, 2)))
val possibilities = s flatMap { m => …
Run Code Online (Sandbox Code Playgroud)

dictionary scala case-class

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

Scala:如何强制将整数包装为对象?

我在这里收到错误:

val a: Int = 1
val i: Int with Object = a
Run Code Online (Sandbox Code Playgroud)

如何在scala中将此1转换为整数对象?我的目的是将它传递给Array[Int with Object].它目前显示错误:

error type mismatch
found : Int(1)
required: Int with java.lang.Object
       val i: Int with Object = a
                                ^
Run Code Online (Sandbox Code Playgroud)

编辑

我有这个错误,因为我使用ArrayAdapterscala 的android ,因此通过定义:

class ImageAdapter[T](ctx: Context, viewResourceId: Int, pointers: Array[T]) extends ArrayAdapter[T](ctx, viewResourceId, pointers) { ... }
Run Code Online (Sandbox Code Playgroud)

它抛出了这个错误:

overloaded method constructor ArrayAdapter with alternatives: 
(android.content.Context,Int,java.util.List[T])android.widget.ArrayAdapter[T] <and> 
(android.content.Context,Int,Array[T with Object])android.widget.ArrayAdapter[T] <and> 
(android.content.Context,Int,Int)android.widget.ArrayAdapter[T]
   cannot be applied to (android.content.Context,  Int, Array[T])
Run Code Online (Sandbox Code Playgroud)

所以我需要T用 …

int scala object

13
推荐指数
1
解决办法
9162
查看次数

打字稿/重塑者9.重复的标识符

我在Visual Studio 2013中遇到了很多"重复标识符"错误,这使我的代码在安装Resharper 9后变得不可读.

重复的标识符

我可以看到存在重复错误的唯一原因是,在另一个项目中,这些文件被包含在内并因此编译了另一次.但它不应该干涉.即使我卸载"依赖"项目,我仍然会遇到这些恼人的突出显示错误.IPosition不仅是唯一受影响的,ILabel,ILabelExample等,所有字段都有相同的错误.

这些错误在代码中突出显示,但不在错误列表中突出显示 - 编译很好.

相关问题:

我应该改变什么设置才能让它们消失?谢谢你的帮忙.

typescript resharper-9.0

11
推荐指数
1
解决办法
1988
查看次数

如何使用自定义Intent从eclipse启动android活动

我想,出于多个测试目的,从Eclipse开始我的android活动,其中包含有关意图的特定数据(例如,要加载的文件名等额外数据).我可以在菜单中提供这个吗?

  • 在运行配置中,3个选项卡中没有任何内容可以提供任何参数
  • 我可以更改资源文件中的一些参数,但我担心我可能会泄漏资源进入最终的应用程序.
  • 可以在adb中执行此操作:请参见此处,但它目前无法与Eclipse中的F11启动命令相关联,这对于同时重新编译和重新启动非常有用.

eclipse android adb android-intent

10
推荐指数
1
解决办法
343
查看次数