编辑:请,请,请阅读前回答这个帖子的底部列出的两个要求.人们不断发布他们的新宝石和图书馆等等,这显然不符合要求.
有时我想非常便宜地将一些命令行选项破解成一个简单的脚本.一个有趣的方法,没有处理getopts或解析或类似的东西,是:
...
$quiet = ARGV.delete('-d')
$interactive = ARGV.delete('-i')
...
# Deal with ARGV as usual here, maybe using ARGF or whatever.
Run Code Online (Sandbox Code Playgroud)
它不是普通的Unix选项语法,因为它将接受选项非选项命令行参数,如" myprog -i foo bar -q",但我可以忍受.(有些人,比如Subversion的开发人员,更喜欢这个.有时我也会这样做.)
只是存在或不存在的选项不能比上述更简单地实现.(一个赋值,一个函数调用,一个副作用.)是否有一种同样简单的方法来处理带参数的选项,例如" -f filename "?
我之前没有说过的一点,因为直到Trollop的作者提到图书馆符合"一个[800行]文件"之前我才清楚,我的目的不仅仅是清洁语法,但对于具有以下特征的技术:
整个代码可以包含在脚本文件中(不会压倒实际的脚本本身,可能只有几十行),因此可以bin使用标准的Ruby 1.8在任何系统上删除dir中的单个文件.[5-7]安装并使用它.如果你不能编写一个没有require语句的Ruby脚本,并且解析几个选项的代码在十几行左右,那么你就不能满足这个要求.
代码很小而且非常简单,人们可以记住足够的代码来直接输入代码来完成这一操作,而不是从其他地方剪切和粘贴.想想你在一个没有互联网访问权限的防火墙服务器的控制台上的情况,你想把一个快速的脚本拼凑起来供客户使用.我不了解你,但是(除了上面的要求失败之外)记住甚至45行的简化微型optparse也不是我要做的事情.
thing.h
@interface Thing : NSObject
{
float stuff[30];
}
@property float stuff;
@end
Run Code Online (Sandbox Code Playgroud)
thing.m
@implementation Thing
@synthesize stuff;
@end
Run Code Online (Sandbox Code Playgroud)
我收到错误:属性'stuff'的类型与ivar'stuff'的类型不匹配
我不想使用NSArray,因为我必须将浮点数变成NSNumber(对吗?),这对于数学运算来说是一种痛苦.
更新:我注意到类似的答案有猜测和试验答案.虽然我很欣赏非Objective-C人员的尝试,但我希望得到一个明确的答案是否有可能.
因为这是我第一次尝试使用对我来说非常有用的扩展方法,我只是想确保我走的是正确的路线
public static bool EqualsAny(this string s, string[] tokens, StringComparison comparisonType)
{
foreach (string token in tokens)
{
if (s.Equals(token, comparisonType))
{
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
叫做
if (queryString["secure"].EqualsAny(new string[] {"true","1"}, StringComparison.InvariantCultureIgnoreCase))
{
parameters.Protocol = Protocol.https;
}
Run Code Online (Sandbox Code Playgroud)
编辑:一些很好的建议,正是我正在寻找的东西.谢谢
编辑:
我已决定以下实施
public static bool EqualsAny(this string s, StringComparison comparisonType, params string[] tokens)
{
// for the scenario it is more suitable for the code to continue
if (s == null) return false;
return tokens.Any(x => s.Equals(x, comparisonType)); …Run Code Online (Sandbox Code Playgroud) 如果我必须在我的开发分支上关注文件:
# file.rb
class Code
def methodA
'aA1'
end
def methodB
'bB2'
end
end
Run Code Online (Sandbox Code Playgroud)
但在我的主分支上,我想将方法分成不同的文件:
# in file.rb
class Code
def methodA
'aA1'
end
end
# in extra.rb
class Code
def methodB
'bB2'
end
end
Run Code Online (Sandbox Code Playgroud)
我可以简单地在开发时创建文件,然后签出以掌握,重新定位并手动分离文件,但是是否可以进行设置以便当我对开发进行更改时它将被转移到文件的右侧"部分"在主人?
我有一个页面包含一些控件,用户控件等.
当我改变一个div从平原<div id="foo">到一个<div id="foo" runat="server">
布局完整的变化.
为什么这样,我怎么能阻止它?
我正在使用2.0 .NET框架
是因为.NET改变了我的身份,这显然是我不想要的?
我有一种情况,其中托管DLL调用一些非托管DLL.我知道非托管DLL的CLSID,有什么方法可以找出哪个二进制文件包含那个CLSID?
我正在尝试构建一个非常小的桌面应用程序 - 可以很快地由人们下载.我试图决定是否应该用.NET或Java构建它.我知道Java将是跨平台的,但我想知道很多Windows用户是否在他们的计算机上没有安装JRE,在这种情况下,我被告知他们需要下载大约15MB的JRE软件来运行这个应用程序.NET将自动预安装在大多数Windows机器中.有谁知道Windows用户在他们的机器上没有JRE的比例是多少?Windows用户的%年龄预先安装了.NET?
PS.我们的决定是:如果大量Windows用户拥有JRE,那么请选择Java,如果没有,那么请选择.NET.
我正在尝试在c#中编写一个Web服务客户端,其Web服务是Java Axis 1.4.Axis服务需要HTTP标头中的Authorization:Basic Base64EncodedToken标头值.我找不到一种方法来在visual studio.net中以不同的方式设置这个头文件,就像普通的WSDL生成引用一样,也不是WSE3.0
我不能使用WCF,因为项目是使用.net 2.0开发的.
有没有办法做到这一点?
Python的sys.path在哪里初始化?
UPD:Python在引用PYTHONPATH之前添加了一些路径:
>>> import sys
>>> from pprint import pprint as p
>>> p(sys.path)
['',
'C:\\Python25\\lib\\site-packages\\setuptools-0.6c9-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\orbited-0.7.8-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\morbid-0.8.6.1-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\demjson-1.4-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\stomper-0.2.2-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\uuid-1.30-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\stompservice-0.1.0-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\cherrypy-3.0.1-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\pyorbited-0.2.2-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\flup-1.0.1-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\wsgilog-0.1-py2.5.egg',
'c:\\testdir',
'C:\\Windows\\system32\\python25.zip',
'C:\\Python25\\DLLs',
'C:\\Python25\\lib',
'C:\\Python25\\lib\\plat-win',
'C:\\Python25\\lib\\lib-tk',
'C:\\Python25',
'C:\\Python25\\lib\\site-packages',
'C:\\Python25\\lib\\site-packages\\PIL',
'C:\\Python25\\lib\\site-packages\\win32',
'C:\\Python25\\lib\\site-packages\\win32\\lib',
'C:\\Python25\\lib\\site-packages\\Pythonwin']
Run Code Online (Sandbox Code Playgroud)
我的PYTHONPATH是:
PYTHONPATH=c:\testdir
Run Code Online (Sandbox Code Playgroud)
我想知道PYTHONPATH之前的那些路径来自哪里?