给出两条绝对路径,例如
/var/data/stuff/xyz.dat
/var/data
Run Code Online (Sandbox Code Playgroud)
如何创建使用第二条路径作为基础的相对路径?在上面的例子中,结果应该是:./stuff/xyz.dat
我最近采用了一种使用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) 此页面描述了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.* ?
我在c#中偶然发现了这个正则表达式我想移植到javascript,我不明白以下内容:
[-.\p{Lu}\p{Ll}0-9]+
Run Code Online (Sandbox Code Playgroud)
当然,我遇到困难的部分\p{Lu}.我访问过的所有正则表达式网站都没有提到过这个修饰符.
任何的想法?
试图使用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个小时!那天发生了什么?维基百科显然没有提及它.
更重要的是,如何计算自特定日期以来的实际天数?
有两种方法可以为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构造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) 我在这里收到错误:
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用 …
我在Visual Studio 2013中遇到了很多"重复标识符"错误,这使我的代码在安装Resharper 9后变得不可读.

我可以看到存在重复错误的唯一原因是,在另一个项目中,这些文件被包含在内并因此编译了另一次.但它不应该干涉.即使我卸载"依赖"项目,我仍然会遇到这些恼人的突出显示错误.IPosition不仅是唯一受影响的,ILabel,ILabelExample等,所有字段都有相同的错误.
这些错误在代码中突出显示,但不在错误列表中突出显示 - 编译很好.
相关问题:
我应该改变什么设置才能让它们消失?谢谢你的帮忙.
我想,出于多个测试目的,从Eclipse开始我的android活动,其中包含有关意图的特定数据(例如,要加载的文件名等额外数据).我可以在菜单中提供这个吗?
scala ×6
android ×2
eclipse ×2
java ×2
adb ×1
c# ×1
caching ×1
case-class ×1
date ×1
dictionary ×1
file ×1
int ×1
javascript ×1
long-integer ×1
object ×1
path ×1
regex ×1
typescript ×1
url ×1