我在解决代码问题上遇到了一些问题.通常我首先检查字符是英文字母的上部还是下部,然后减去或添加32以将其转换为相应的字母.但我发现有人^= 32做了同样的事情.这里是:
char foo = 'a';
foo ^= 32;
char bar = 'A';
bar ^= 32;
cout << foo << ' ' << bar << '\n'; // foo is A, and bar is a
Run Code Online (Sandbox Code Playgroud)
我已经搜索了这方面的解释并没有找到答案.那么为什么会这样呢?
我确信这有一个简单的答案,但是如何在Julia中比较两个字符串并忽略大小写?我已经破解了一个相当不优雅的解决方案:
function case_insensitive_match{S<:AbstractString}(a::S,b::S)
lowercase(a) == lowercase(b)
end
Run Code Online (Sandbox Code Playgroud)
肯定有更好的办法!
所以我是学习装饰器的新手,我已经阅读了无数的教程,虽然我理解并且基本上可以遵循所有示例,但我认为最好的学习方法是自己实现装饰器。所以我将在下面使用这个例子。我意识到装饰器根本不需要执行此操作,但为了学习,我想添加一个装饰器来过滤狗名和品种等字符串并将其转换为小写。任何正确方向的想法或指示将不胜感激。
class Dogs:
totalDogs = 0
dogList=[]
def __init__(self, breed, color, age):
self.breed=breed
self.color=color
self.age=age
Dogs.dogList.append(self.breed)
Dogs.totalDogs += 1
def displayDogs(self):
print "breed: ", self.breed
print "color: ",self.color
print "age: ",self.age
print "list of breeds:", Dogs.dogList
print "total dogs: ", Dogs.totalDogs
def somedecorator(*args):
#now what
terrier=Dogs("TeRrIer", "white", 5)
terrier.displayDogs()
retriever=Dogs("goldenRETRIEVER", "brown", 10)
retriever.displayDogs()
Run Code Online (Sandbox Code Playgroud)