小编Kre*_*ver的帖子

从String编译java源代码而不写入文件

在这里,我找到了一些很好的例子:

// Prepare source somehow.
String source = "package test; public class Test { static { System.out.println(\"hello\"); } public Test() { System.out.println(\"world\"); } }";

// Save source in .java file.
File root = new File("/java"); // On Windows running on C:\, this is C:\java.
File sourceFile = new File(root, "test/Test.java");
sourceFile.getParentFile().mkdirs();
new FileWriter(sourceFile).append(source).close();

// Compile source file.
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
compiler.run(null, null, null, sourceFile.getPath());

// Load and instantiate compiled class.
URLClassLoader classLoader = URLClassLoader.newInstance(new URL[] { root.toURI().toURL() }); …
Run Code Online (Sandbox Code Playgroud)

java

12
推荐指数
1
解决办法
1467
查看次数

修改基础分支并立即重新设定所有子项

我有这样的事情:

A //branch 1
 \
  B - C //branch 2
       \
        D //branch 3
Run Code Online (Sandbox Code Playgroud)

我想得到这样的东西:

 A - E //branch_1
      \
       B' - C' //branch_2
             \
              D' //branch_3
Run Code Online (Sandbox Code Playgroud)

我想一次执行一个命令并重新设置所有分支,所以我不必一一重新设置它们。这可能吗?

git

7
推荐指数
1
解决办法
1097
查看次数

在Akka演员上与mockito进行间谍活动

我想监视我的actor实例,但它不能简单地用new关键字创建.我想出了以下解决方案:

  val testActorSpy = spy(TestActorRef(new TestActor).underlyingActor)
  val testActorRef = TestActorRef(testActorSpy )
Run Code Online (Sandbox Code Playgroud)

但这样我创造了一个不必要的演员.有没有更清洁的解决方案?

mockito akka scalatest

6
推荐指数
1
解决办法
971
查看次数

获取定义val的名称

我想要捕获我的宏的输出分配给的变量的名称.与projectbuild.sbt完全相同.如果有的话,我更喜欢开箱即用的解决方案(库),因为它看起来像一般的用例.

这是一个小例子

val someValue = myMacro()
Run Code Online (Sandbox Code Playgroud)

并作为myMacro()我希望得到字符串的输出"someValue".

scala scala-macros

5
推荐指数
1
解决办法
833
查看次数

减小控制台尺寸

我在改变控制台尺寸方面遇到了问题.这是我的代码:

BOOL setConsole(int x, int y)
{
hStdin = GetStdHandle(STD_INPUT_HANDLE); 
hStdout = GetStdHandle(STD_OUTPUT_HANDLE); 
if (hStdin == INVALID_HANDLE_VALUE || 
    hStdout == INVALID_HANDLE_VALUE) 
{
    MessageBox(NULL, TEXT("GetStdHandle"),
        TEXT("Console Error"), MB_OK);
    return false;
}


SMALL_RECT windowSize = {0, 0, x-1, y-1};

// Change the console window size:
SetConsoleWindowInfo(hStdout, TRUE, &windowSize);

COORD c = { x, y};

//Change the internal buffer size:
SetConsoleScreenBufferSize(hStdout, c);


SetConsoleDisplayMode(hStdout,CONSOLE_FULLSCREEN_MODE, &c);

return true;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试放大控制台时,它工作得非常好.当一个参数小于前一个参数时,没有任何反应.怎么了?

@edit:经过一些测试我注意到,如果我一次更改一个参数,则可以调整大小(缩小).示例(假设控制台为100x100)

 setConsole(90,90); //dosen't work.
 setConsole(90,100);
 setConsole(90,90); // works perfectly
Run Code Online (Sandbox Code Playgroud)

为什么?!

c++ winapi console-application

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

你怎么知道你可以发送给演员的消息?

有没有标准化的方式来形式化我的scala/akka演员api?Imho,我需要了解实现以了解要发送的内容并不是一个好的选择.此外,如果实现已更改并且我的消息不再有效(不调用我认为它调用的操作),我不会收到任何警告或错误.

scala actor akka

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

为什么 scala self 类型不是其要求的子类型

我想知道以下行为背后的原因是什么?

@ trait Bar
defined trait Bar

@ trait Foo { self: Bar => }
defined trait Foo

@ def x: Foo = ???
defined function x

@ val y: Bar = x
cmd3.sc:1: type mismatch;
 found   : ammonite.$sess.cmd1.Foo
 required: ammonite.$sess.cmd0.Bar
val y: Bar = x
             ^
Compilation Failed
Run Code Online (Sandbox Code Playgroud)

AFAIU,Foo要求其每个子类型都是 的子类型,Bar那么为什么实例Foo不是 的正确实例Bar

@编辑

只是为了让问题更清楚:我想知道为什么它会这样工作。一些可能的答案是:

  1. 有一些特征 X 在它们之间的子类型关系中是不可能的。
  2. 发生子类型关系是不正确的(例如,存在这样的类型实例,Foo而不是Bar运行时类型的实例)
  3. 这两种情况(有和没有子类型关系)都是有效的,因此编译器团队必须选择其中之一。如果是这样,是否有理由做出这样的决定还是随机选择?

似乎至少 1) 有点正确(隐藏子类型作为实现细节)。

inheritance scala self-type subtyping

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

如何在Elm(或Haskell)中的函数之间共享数据

我想在elm中为外部api创建一个http客户端.在scala中,这是OO/FP混合,我会表达这一点(暂时忘记异步),简单如下:

class Client(url: String) {
    def getFoo(): String = ???
}
Run Code Online (Sandbox Code Playgroud)

但在榆树林有点迷失.显而易见的解决方案是将url直接传递给函数

module Client

getFoo : String -> String
Run Code Online (Sandbox Code Playgroud)

但这使用起来非常痛苦,因为它使每个调用都变得复杂,因此负担随着定义的函数数量和对这些函数的调用次数而增加.

我试图使用带有函数的记录,例如:

type alias Client = { getFoo: String }

createClient : String -> Client
Run Code Online (Sandbox Code Playgroud)

但感觉就像是对OOP的模仿.AFAIU由Ocaml中的Functors和OOP中的对象解决.

什么是在Elm(或Haskell,如果Elm缺少某些特定功能)的规范方法?

haskell functional-programming elm

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

使用 aeson 解析未标记的和类型

我想解析外部 json 在哪里RequestItem并且FolderItem可以出现在同一个地方。我提供了以下编码,其中每个变体都定义为单独的数据类型:

data RequestItem = RequestItem { name :: String } deriving (Generic, Show)

data FolderItem = FolderItem { item :: [Item] } deriving (Generic, Show)

data Item
  = RequestChoice RequestItem
  | FolderChoice FolderItem
  deriving (Show)    

instance FromJSON Item where
  parseJSON = (\v -> asum [
    RequestChoice <$> (genericParseJSON defaultOptions v),
    FolderChoice <$> (genericParseJSON defaultOptions v)
   ]) :: Value -> Parser Item
Run Code Online (Sandbox Code Playgroud)

这可以简化为单个数据类型定义,消除RequestChoiceFolderChoice

一个限制:我不想手动编写解析器,而是使用泛型派生。

haskell aeson

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