小编stu*_*ash的帖子

R 的 list() 函数实际上创建了一个嵌套列表吗?

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)

r list

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

在 python3 中正确覆盖 __new__

所以我试图覆盖__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)

python oop inheritance factory-pattern python-3.5

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

如何在C++中正确使用char指向数组的指针?

我想拿起我的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)

c++ arrays pointers

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

标签 统计

arrays ×1

c++ ×1

factory-pattern ×1

inheritance ×1

list ×1

oop ×1

pointers ×1

python ×1

python-3.5 ×1

r ×1