R 可能有自己的 loigc 但list()没有给我我所期望的。
l1 <- list(1,2)
$> l1
[[1]]
[1] 1
[[2]]
[1] 2
Run Code Online (Sandbox Code Playgroud)
要检索元素,我需要使用双括号,即
$> l1[[1]]
[1] 1
$> class(l1[[1]])
"numeric"
Run Code Online (Sandbox Code Playgroud)
单括号给了我一个子列表(这也是一个列表对象):
$> l1[1]
l1[[1]]
[1] 1
$> class(l1[1])
"list"
Run Code Online (Sandbox Code Playgroud)
我并不是说这是错误的;我并不是说这是错误的。这不是我所期望的,因为我试图创建一个一维列表,而我实际得到的是一个嵌套列表,一个二维对象。
这种行为背后的逻辑是什么?我们如何创建 OO 类型列表?即一维数据结构?
我期望的一维数据结构的行为是:
$> l1[1]
[1] 1
$> l1[2]
[2] 2
Run Code Online (Sandbox Code Playgroud) 所以我试图覆盖__new__并让它作为一个工厂存在来创建派生实例。在阅读了一些关于 SO 的内容后,我的印象是我也应该调用__new__派生实例。
基础事物
class BaseThing:
def __init(self, name, **kwargs):
self.name = name
# methods to be derived
Run Code Online (Sandbox Code Playgroud)
物厂
class Thing(BaseThing):
def __new__(cls, name, **kwargs):
if name == 'A':
return A.__new__(name, **kwargs)
if name == 'B':
return B.__new__(name, **kwargs)
def __init__(self, *args, **kwargs):
super().__init__(name, **kwargs)
# methods to be implemented by concrete class (same as those in base)
Run Code Online (Sandbox Code Playgroud)
一种
class A(BaseThing):
def __init__(self, name, **kwargs):
super().__init__(name, **kwargs)
Run Code Online (Sandbox Code Playgroud)
乙
class B(BaseThing):
def __init__(self, name, **kwargs):
super().__init__(name, **kwargs) …Run Code Online (Sandbox Code Playgroud) 我想拿起我的C++; 我对指针和引用有基本的了解; 但是当谈到指向数组的char指针时,它似乎对我没什么用.
我这里有一小段代码(省略include和namespace语句),我在下面的评论中包含了我的问题:
我至少经历了5个关于SO的问题,试图理解它; 但是那些答案并不是我所期望的答案,而是能够帮助理解那里的实际问题.
你能否从表面上深入解释我在下面评论过的问题(所以请不要直接深入研究)?
int main(){
// 1 this is a char pointer to a char;
char * c = new char;
*c ='A';
cout << c << endl; // this gives me memory address;
cout << *c << endl;// this gives me the value in the memory address;
// 2 this is a char array initialised to value "world";
char d[6] = "world";
cout << d[0] << endl; // this gives me the first element of …Run Code Online (Sandbox Code Playgroud)