小编Bil*_*ard的帖子

Scala是意外的类型行为

为什么这个代码段没有打印出来:"你成功实现了这个功能"

细节:

为什么val实际上看起来类型为List [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[

// Flatten a nested list structure

def flatten[T](list: List[Either[List[T], T]]): List[T] = list flatMap {
    // TODO: Implement
    case list: List[T]  => list
    case element: T     => List(element)
}

implicit def ElementToEitherLeft[T](obj: T) = Left(obj)
implicit def ElementToEitherRight[T](obj: T) = Right(obj)

val list: List[Either[List[Int], Int]] = List(List(1, 1), 2, List(3, 5))
val actual: List[Int] = flatten[Int](list)
val expected = List(1, 1, 2, 3, 5)
if (actual == expected)     print("You successfully implemented the function")
else                        print("Unfortunatly, that's …
Run Code Online (Sandbox Code Playgroud)

types scala

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

如何从同一个包中访问Perl中的对象功能

我正在制作一个Perl模块,我仍然在研究Perl如何处理对象.这是new我写的用于创建对象的子,我没有更新元素的问题:

sub new {
    my $class = shift;
    my ($self) = {
        name => undef
    };
    bless($self, $class);
    return $self;
}
sub get_name {
    my $self = shift;
    $self->{name} = 'Eve';
    return $self->{name};
}
Run Code Online (Sandbox Code Playgroud)

当我调用模块并从另一个文件访问它时,我可以使用该对象,但我想在模块代码中的其他区域使用对象中的数据.

所以我这样做没有问题:

my $new_object = new ProgramTest; # ProgramTest being the module/package
my $name = get_name();
Run Code Online (Sandbox Code Playgroud)

但是我想$self在"模块内部"方法中使用元素,这种方法永远不会被外部脚本访问.所以我想要这样的东西:

sub get_variables {
    return (name); # I don't know how to get the name here 
    # (I plan to have other variables, too)
}
Run Code Online (Sandbox Code Playgroud)

我可能错过了一些明显的东西(我确信当我看到解决方案时我会踢自己),所以任何帮助都表示赞赏!我希望这样,以便模块的其余部分可以使用变量(不更改),因为有条件依赖于它们的值.

oop perl module object

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

按组"递归"查找第一行/最后一行

我试图找到一种有效的方法来按组查找第一行和最后一行.

R) ex=data.table(state=c("az","fl","fl","fl","fl","fl","oh"),city=c("TU","MI","MI","MI","MI","MI","MI"),code=c(85730,33133,33133,33133,33146,33146,45056))
R) ex
   state city  code
1:    az   TU 85730           
2:    fl   MI 33133           
3:    fl   MI 33133           
4:    fl   MI 33133           
5:    fl   MI 33146           
6:    fl   MI 33146           
7:    oh   MI 45056           
Run Code Online (Sandbox Code Playgroud)

我想找到一个组的每个变量的第一个和最后一个

R) ex
   state city  code first.state last.state first.city last.city first.code last.code
1:    az   TU 85730           1          1          1         1          1         1
2:    fl   MI 33133           1          0          1         0          1         0
3:    fl   MI 33133           0          0          0         0          0         0
4:    fl …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

值* 到指令*/LoadInst* 转换

你能告诉我是否可以在 LLVM 中将 a 转换Value*Instruction*/LoadInst*if 例如isa<LoadInst>(MyValue)为 true 吗?在我的特定代码中:

\n\n
Value* V1 = icmpInstrArray[i]->getOperand(0);\nValue* V2 = icmpInstrArray[i]->getOperand(1);\nif (isa<LoadInst>(V1) || isa<LoadInst>(V2)){\n...\nif(isa<LoadInst>(icmpInstrArray[i]->getOperand(0)))\n    LoadInst *LD100 = cast<LoadInst>(icmpInstrArray[i]->getOperand(0));\n        Value *C100 = LD100->getPointerOperand(); //HERE COMPILATION ERROR\n
Run Code Online (Sandbox Code Playgroud)\n\n

此外,我只需要做C100->getName()即可获得加载的变量。

\n\n

编译错误是:error: \xe2\x80\x98LD100\xe2\x80\x99 was not declared in this scope.

\n\n

我不认为我可以那样使用强制转换。你能告诉我一种从与我的ICMP指令相对应的Load指令中获取加载变量的方法吗?或者更好的是我如何从中提取加载指令icmpInstrArray[i]->getOperand(0)

\n

llvm

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

骰子返回0而没有卷

playerDice = new Dice();
int playerDiceNo = playerDice.getfaceofDie();
MessageBox.Show("Your roll" + playerDiceNo);

compDice = new Dice();
int compDiceNo = compDice.getfaceofDie();
MessageBox.Show("Computers roll:" + compDiceNo);
Run Code Online (Sandbox Code Playgroud)

上面是我点击滚动按钮时的方法.下面是我的骰子课:

class Dice
{
    private int faceofDie;
    public void rollDice()
    {
        Random rollDice = new Random();
        faceofDie = rollDice.Next(1, 7);          
    }
    public int getfaceofDie()
    {
        return faceofDie;
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经为compDice和playerDice声明了我的变量:

Dice compDice;
Dice playerDice;
Run Code Online (Sandbox Code Playgroud)

我似乎无法弄清楚为什么它会为两个翻转都返回0.有人可以帮忙吗?

c# dice

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

测试用例管理和硒?

只是想知道其他人如何管理为硒测试自动化编写的测试用例?我一直在调查可能与testlink集成以显示结果和所有,但我已经为我的环境设置了Jenkins并运行我的测试.我真正想要的是一些很好地记录我的测试的方法,比如每个测试为非程序员执行的步骤.

我正在使用Selenium和python,Jenkins运行测试.

selenium automated-tests

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

简单的"捕捉"逻辑

我有一个字符串^,它被转换为Uint32在下面的代码中:

try
{
    int newX = System::Convert::ToUInt32(this->cbXSizeBox->Text);
}
catch (FormatException^ e)
{
    printf("\nNot a valid 3-digit number");
    this->cbXSizeBox->Text = System::Convert::ToString(capBoxSize->x);
}
Run Code Online (Sandbox Code Playgroud)

这很好.(FYI capBoxSize-> x是另一个可以评估为uint32的值).

基本上捕获的是捕获cbXSizeBox-> Text(这是一个字符串)的值,回到它的默认值,如果用户输入除数字之外的任何内容(例如2g9).

如果catch块没有捕获格式异常,我想添加代码来将capBoxSize-> x的值更改为它的新有效值.我试图找到一些对编译器说的内容,"如果你抓住了这个异常,就这样做.但是如果你没有捕获异常,那就去做吧." 是否可以在if else语句中包含catch块?

如果您了解我正在尝试做什么,任何建议将不胜感激.

PS在try块中更改capBoxSize-> x的代码实际上并不是我认为的选项.因为这可能会尝试将newX分配给capBoxSize-> X这样的"2ty",这是一个Uint32.这可能会导致错误.

c++ exception-handling c++-cli try-catch

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

[myclass encodeWithCoder:]:使用NSUserDefaults时发送到实例错误的无法识别的选择器

我正在尝试使用restkit中的值填充字典.我在restEngine.m中使用NSUserDefaults保存字典

 NSDictionary *dict = [mappingResult dictionary];

                   [[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:dict] forKey:kPopulateTableView ];
                   [[NSUserDefaults standardUserDefaults] synchronize];
Run Code Online (Sandbox Code Playgroud)

当我构建应用程序时,它会中断错误消息:

"[myclass encodeWithCoder:]:无法识别的选择器发送到实例"

我在这做错了什么?

nsdictionary nsuserdefaults ios restkit

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

在具有换行符的字符串中的两个单词之间提取

我有一个像这样的字符串:

“嘿,我是 Peter,我是一名软件工程师。我知道 Java,我是 RegEx 的新手”。

我想从“Peter to new”中提取所有字符。

从 gskinner.com/RegExr/ 我可以看到这种模式有效 - (?<=Hey)([^\n]*)(?=Reg)

但是在 Java 中,它不起作用。任何人都可以帮忙吗?在 Java 中需要做哪些不同的工作?

我的代码如下所示:

    Pattern p = Pattern.compile("(?<=Hey)([^\n]*)(?=Reg)");
    Matcher m = p.matcher(p);
    m.find();
    System.out.println(m.group(0));
Run Code Online (Sandbox Code Playgroud)

当我运行时,我收到一个异常,上面写着“找不到匹配项”。

线程“main”中的异常 java.lang.IllegalStateException:在 java.util.regex.Matcher.group(Matcher.java:485) 中找不到匹配项

java regex

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

我无法运行Java程序

我开始学习Java.我按照教程介绍了如何安装它.我还通过在cmd中键入"javac"(不带引号)来检查它是否有效.是的,它提供了一个完整的文本列表,这意味着它应该工作,对吗?

这是我的java代码:

class apples{
    public static void main(String args[]) {
        System.out.printIn("hello youtube");
    }
}
Run Code Online (Sandbox Code Playgroud)

我把它保存在我的驱动器中名为'test'的文件夹中.这是我在cmd中输入的内容:

cd \
dir
Run Code Online (Sandbox Code Playgroud)

现在它列出了我的驱动器中的所有内容,其中一个是测试

cd test
dir
Run Code Online (Sandbox Code Playgroud)

现在它列出了测试中的所有内容,其中一个是' youtube.java'(我命名的文件),所以我输入

javac youtube.java
Run Code Online (Sandbox Code Playgroud)

这不起作用这就是它给我的东西:

youtube.java:3:错误:找不到符号
System.out.printIn("hello youtube");
symbol:方法printIn(字符串)
location:变量类型PrintStream
1错误

有人可以帮我解决这个问题吗?

java

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