我有一个R脚本,我希望能够提供几个命令行参数(而不是在代码本身硬编码参数值)。该脚本运行在Windows系统上。
我找不到关于如何将命令行上提供的参数读到我的R脚本的信息。如果这不能做到,我会感到惊讶,所以也许我只是没有在我的谷歌搜索中使用最好的关键字…
有什么建议吗?
我有一个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)
我遗漏了什么吗?除了将代码添加到单元测试之外,自动连接构造函数还有其他功能吗?这是一种更可取的依赖注入方式吗?