如何在下面的例子中跳过写入文件"test.txt"的步骤,即将cat-result分配给一个对象,并仍然达到相同的最终结果?
我想我会包含完整的例子来说明问题的背景.
test <- c("V 1", "x", "1 2 3", "y", "3 5 8", "V 2", "x", "y", "V 3", "y", "7 2 1", "V 4", "x", "9 3 7", "y")
# Write selection to file
cat(test, "\n", file="test.txt")
test2 <- readLines("test.txt")
test3 <- strsplit(test2, "V ")[[1]][-1]
# Find results
x <- gsub("([0-9]) (?:x )?([0-9] [0-9] [0-9])?.*", "\\1 \\2 ", test3, perl = TRUE)
y <- gsub("([0-9]).* y ?([0-9] [0-9] [0-9])?.*", "\\1 \\2 ", test3, perl = TRUE)
# Eliminate …Run Code Online (Sandbox Code Playgroud) 当你有一个在object-instatiation时已知的变量时,应该使用readonly字段,之后不应该更改.
但是,不允许从子类的构造函数中分配只读字段.如果超类是抽象的,这甚至都不起作用.
有没有人有一个很好的解释为什么这不是一个好主意,或缺乏C#languange?
abstract class Super
{
protected readonly int Field;
}
class Sub : Super
{
public Sub()
{
this.Field = 5; //Not compileable
}
}
Run Code Online (Sandbox Code Playgroud)
PS:您当然可以通过在超类中的受保护构造函数中分配只读字段来获得相同的结果.
是否可以在JavaScript类的构造函数中使用解构赋值来分配实例变量,类似于如何对常规变量执行此操作?
以下示例有效:
var options = {one: 1, two: 2};
var {one, two} = options;
console.log(one) //=> 1
console.log(two) //=> 2
Run Code Online (Sandbox Code Playgroud)
但我不能得到类似以下的东西:
class Foo {
constructor(options) {
{this.one, this.two} = options;
// This doesn't parse correctly and wrapping in parentheses doesn't help
}
}
var foo = new Foo({one: 1, two: 2});
console.log(foo.one) //=> I want this to output 1
console.log(foo.two) //=> I want this to output 2
Run Code Online (Sandbox Code Playgroud) 我在许多地方看到切片赋值用于lists.当与(非默认)索引一起使用时,我能够理解它的用法,但我无法理解它的用法,如:
a_list[:] = ['foo', 'bar']
Run Code Online (Sandbox Code Playgroud)
这有什么不同
a_list = ['foo', 'bar']
Run Code Online (Sandbox Code Playgroud)
?
我是Java的新手,我对于对象分配有一些问题.例如,
Test t1 = new Test();
Test t2 = t1;
t1.i=1;
Run Code Online (Sandbox Code Playgroud)
假设变量i的测试类中定义的,我说得对假设T1和T2点到修改同一个对象t1.i=1会影响t1和t2?实际上我测试了它,看起来我是对的.但是,当我尝试相同的操作时String,修改仅发生在另一侧不受影响的一侧.这背后的原因是什么?
编辑:我尝试使用String的情况.
String s1 = "0";
String s2 = s1;
s1 = "1";
System.out.println(s1);
System.out.println(s2);
Run Code Online (Sandbox Code Playgroud)
我通过测试String上的案例来实现我的错误,因为它是不可变的.我认为s1="1"修改字符串的情况实际上是将"1"的引用返回给s1.不过,我的问题仍然存在.是否Test t2 = t1;导致t2和t1指向同一个对象,或者现在每个都有自己的对象?这种情况是否适用于Java上的所有对象?
能够写出来真的很好
@foo ||= "bar_default"
Run Code Online (Sandbox Code Playgroud)
要么
@foo ||= myobject.bar(args)
Run Code Online (Sandbox Code Playgroud)
但我一直在寻找是否有办法写出类似的东西
@foo ||= do
myobject.attr = new_val
myobject.other_attr = other_new_val
myobject.bar(args)
end
Run Code Online (Sandbox Code Playgroud)
在实际的功能代码中大致相当于类似的东西
@foo = if !@foo.nil?
@foo
else
myobject.attr = new_val
myobject.other_attr = other_new_val
myobject.bar(args)
end
Run Code Online (Sandbox Code Playgroud)
我想我可以编写自己的全局方法,如"getblock"来包装并返回任何常规块的结果,但我想知道是否已经有一种内置的方法来执行此操作.
我正在研究R函数中的参数,但是我有一些问题需要理解它的逻辑.
h <- function(a = 1, b = d){
d <- (a + 1)^2
c(a, b)
}
h()
# [1] 1 4
Run Code Online (Sandbox Code Playgroud)
我期望错误消息将返回,因为没有值b.
d是在h函数下创建的,但是没有代码b = d可以b在函数中赋值h.
但结果是[1] 1 4.
如何b和d链接?
对于这个计划
#include <iostream>
using std::cout;
struct C
{
C() { cout << "Default C called!\n"; }
C(const C &rhs) { cout << "CC called!\n"; }
};
const C f()
{
cout << "Entered f()!\n";
return C();
}
int main()
{
C a = f();
C b = a;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出是:
Entered f()!
Default C called!
CC called!
Run Code Online (Sandbox Code Playgroud)
由于f()按值返回,它应该返回一个临时值.由于T a = x;是T a(x);,是不是要求建设的拷贝构造函数a,使用临时传入作为它的参数?
c++ variable-assignment copy-constructor compiler-optimization temporaries
我对这个陈述有些麻烦,毫无疑问我对这个选择陈述的回复是无知的:
declare @myInt as INT
set @myInt = (select COUNT(*) from myTable as count)
if(@myInt <> 0)
begin
print 'there's something in the table'
end
Run Code Online (Sandbox Code Playgroud)
myTable中有记录,但是当我运行上面的代码时,print语句永远不会运行.进一步检查表明,在上面的赋值后,myInt实际上为零.我确定我错过了一些东西,但我认为选择计数会返回一个我可以在上面使用的标量?
一点点背景首先......
我写了一个中缀函数,实质上取代了成语
x[[length(x) +1]] <- y
..或仅仅是x <- append(x, y)为了矢量.
这里是:
`%+=%` <- function(x, y) {
xcall <- substitute(x)
xobjname <- setdiff(all.names(xcall), c("[[", "[", ":", "$"))
# if the object doesn't exist, create it
if (!exists(xobjname, parent.frame(), mode = "list") &&
!exists(xobjname, parent.frame(), mode = "numeric") &&
!exists(xobjname, parent.frame(), mode = "character")) {
xobj <- subset(y, FALSE)
} else {
xobj <- eval(xcall, envir = parent.frame())
}
if (is.atomic(xobj)) {
if (!is.atomic(y)) {
stop('Cannot append object of mode …Run Code Online (Sandbox Code Playgroud) r ×3
aggregate ×1
block ×1
c# ×1
c++ ×1
function ×1
inheritance ×1
java ×1
javascript ×1
list ×1
object ×1
operators ×1
python ×1
readonly ×1
restriction ×1
ruby ×1
slice ×1
sql-server ×1
syntax ×1
t-sql ×1
temporaries ×1