我有一个R脚本,我希望能够提供几个命令行参数(而不是在代码本身硬编码参数值)。该脚本运行在Windows系统上。

我找不到关于如何将命令行上提供的参数读到我的R脚本的信息。如果这不能做到,我会感到惊讶,所以也许我只是没有在我的谷歌搜索中使用最好的关键字…

有什么建议吗?

r和n有什么不同?我认为这与Unix、Windows和Mac有关,但我不确定它们到底有什么不同,以及在正则表达式中搜索/匹配哪个。

考虑一下——基类a,类B继承自a,类C继承自B,在初始化器中调用父类初始化器的通用方法是什么?如果这听起来仍然太模糊,这里有一些代码。

class A(object):
    def __init__(self):
        print "Initialiser A was called"

class B(A):
    def __init__(self):
        super(B,self).__init__()
        print "Initialiser B was called"

class C(B):
    def __init__(self):
        super(C,self).__init__()
        print "Initialiser C was called"

c = C()

我现在就是这么做的。但它似乎还是有点太非泛型了——您仍然必须手动传递正确的类型。

现在,我尝试使用self。__class__作为super()的第一个参数,但是,显然它不起作用-如果你把它放在C的初始化式中-很好,B的初始化式会被调用。如果你在B中做同样的事情,“self”仍然指向C的一个实例,所以你最终再次调用B的初始化式(这以无限递归结束)。

目前没有必要考虑钻石继承的问题,我只是对解决这个具体问题感兴趣。

当我在Windows中打开cmd.exe时,它使用的是什么编码?

如何检查当前使用的编码?这取决于我的区域设置还是有任何环境变量需要检查?

当您以某种编码方式键入文件时会发生什么?有时我得到乱码(不正确的编码使用),有时它的工作。然而,只要我不知道发生了什么,我就不相信任何事情。有人能解释一下吗?

我需要在WPF控件层次结构中搜索与给定名称或类型匹配的控件。我该怎么做呢?

我想提供两种不同的序列化器,并且能够从ModelViewSet的所有功能中受益:

当查看对象列表时,我希望每个对象都有一个url,该url重定向到其详细信息,并且每个其他关系都使用目标模型的__unicode __出现;

例子:

{
  "url": "http://127.0.0.1:8000/database/gruppi/2/",
  "nome": "universitari",
  "descrizione": "unitn!",
  "creatore": "emilio",
  "accesso": "CHI",
  "membri": [
    "emilio",
    "michele",
    "luisa",
    "ivan",
    "saverio"
  ]
}

在查看对象的详细信息时,我希望使用默认的HyperlinkedModelSerializer

例子:

{
  "url": "http://127.0.0.1:8000/database/gruppi/2/",
  "nome": "universitari",
  "descrizione": "unitn!",
  "creatore": "http://127.0.0.1:8000/database/utenti/3/",
  "accesso": "CHI",
  "membri": [
    "http://127.0.0.1:8000/database/utenti/3/",
    "http://127.0.0.1:8000/database/utenti/4/",
    "http://127.0.0.1:8000/database/utenti/5/",
    "http://127.0.0.1:8000/database/utenti/6/",
    "http://127.0.0.1:8000/database/utenti/7/"
  ]
}

我通过以下方法做到了这一切:

serializers.py

# serializer to use when showing a list
class ListaGruppi(serializers.HyperlinkedModelSerializer):
    membri = serializers.RelatedField(many = True)
    creatore = serializers.RelatedField(many = False)

    class Meta:
        model = models.Gruppi

# serializer to use when showing the details
class DettaglioGruppi(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = models.Gruppi

views.py

class DualSerializerViewSet(viewsets.ModelViewSet):
    """
    ViewSet providing different serializers for list and detail views.

    Use list_serializer and detail_serializer to provide them
    """
    def list(self, *args, **kwargs):
        self.serializer_class = self.list_serializer
        return viewsets.ModelViewSet.list(self, *args, **kwargs)

    def retrieve(self, *args, **kwargs):
        self.serializer_class = self.detail_serializer
        return viewsets.ModelViewSet.retrieve(self, *args, **kwargs)

class GruppiViewSet(DualSerializerViewSet):
    model = models.Gruppi
    list_serializer = serializers.ListaGruppi
    detail_serializer = serializers.DettaglioGruppi

    # etc.

基本上,我检测用户何时请求列表视图或详细视图,并更改serializer_class以满足我的需要。但我对这段代码并不满意,它看起来像一个肮脏的黑客,最重要的是,如果两个用户同时请求一个列表和一个细节怎么办?

是否有更好的方法来实现这个使用ModelViewSets或我必须返回使用GenericAPIView?

编辑: 下面是如何使用一个自定义的基础ModelViewSet:

class MultiSerializerViewSet(viewsets.ModelViewSet):
    serializers = { 
        'default': None,
    }

    def get_serializer_class(self):
            return self.serializers.get(self.action,
                        self.serializers['default'])

class GruppiViewSet(MultiSerializerViewSet):
    model = models.Gruppi

    serializers = {
        'list':    serializers.ListaGruppi,
        'detail':  serializers.DettaglioGruppi,
        # etc.
    }

在操作路径和文件名时,我总是陷入困境,因为我没有遵循路径组件的命名标准。

考虑下面的玩具问题(以Windows为例,但希望答案与平台无关)。你已经得到了一个文件夹的路径:

C:\Users\OddThinking\Documents\My Source\

您希望遍历下面的文件夹并将所有.src文件编译为.obj文件。

在某种程度上,你会看到以下路径:

C:\Users\OddThinking\Documents\My Source\Widget\foo.src

你如何命名下面的路径组件?

A. foo
B. foo.src
C. src
D. .src
E. C:\Users\OddThinking\Documents\My Source\ (absolute path of the root)
F. Widget\foo.src (relative path of the file to absolute path of the root)
G. Widget\
H. C:\Users\OddThinking\Documents\My Source\Widget\
I. C:\Users\OddThinking\Documents\My Source\Widget\foo.src

以下是我的尝试:

A.基地名称?Basename吗?

B.文件名?文件名吗?在选择标识符名称时,差异很重要,这里我从来没有保持一致。

c扩展吗?

d .扩展吗?等等,这就是我所说的c,我应该避免存储点,只在需要的时候放进去吗?如果某个文件上没有点怎么办?

E. ?

F. ?

g .文件夹吗?但这不是windows特有的术语吗?

H.路径名称?路径名吗?路径?

一、文件名?等等,这就是我说的c路径名?等等,这就是我说的H。

关于堆栈有一个类似的帖子,但它可能对我的问题没有帮助,因为我使用的是Visual Studio 2015。

如何在VS2015中显示“启用NuGet包恢复”选项?

我选择文件>新项目,并创建一个空ASP。NET Web应用程序。我在找这个菜单项。

我应该提到,我已经在我的项目文件夹中寻找任何预先存在的nuGet文件,没有。

我知道color bf命令设置了整个命令行窗口的颜色,但我想打印不同颜色的单行。

因此,由于我一直在使用Spring,如果我要编写一个有依赖关系的服务,我会这样做:

@Component
public class SomeService {
     @Autowired private SomeOtherService someOtherService;
}

我现在遇到了使用另一种约定来实现相同目标的代码

@Component
public class SomeService {
    private final SomeOtherService someOtherService;

    @Autowired
    public SomeService(SomeOtherService someOtherService){
        this.someOtherService = someOtherService;
    }
}

我知道这两种方法都有效。但是选择B有什么好处吗?对我来说,它在类和单元测试中创建了更多的代码。(必须写构造函数,不能使用@InjectMocks)

我遗漏了什么吗?除了将代码添加到单元测试之外,自动连接构造函数还有其他功能吗?这是一种更可取的依赖注入方式吗?