在Java中的for循环中防止null的最佳方法是什么?
这看起来很难看:
if (someList != null) {
for (Object object : someList) {
// do whatever
}
}
Run Code Online (Sandbox Code Playgroud)
要么
if (someList == null) {
return; // Or throw ex
}
for (Object object : someList) {
// do whatever
}
Run Code Online (Sandbox Code Playgroud)
可能没有任何其他方式.他们应该把它放在for构造本身,如果它是null,那么不要运行循环?
我正在将C++算法转换为C#.我遇到了这个for循环:
for (u = b.size(), v = b.back(); u--; v = p[v])
b[u] = v;
Run Code Online (Sandbox Code Playgroud)
它在C++中没有错误,但在C#中没有错误(不能将int转换为bool).我真的无法弄清楚这个循环,条件在哪里?
有人可以解释一下吗?
PS.只是为了检查,使VECTOR适应LIST b.back()对应b [b.Count-1]?
如何循环列表并抓取每个项目?
我希望输出看起来像这样:
Console.WriteLine("amount is {0}, and type is {1}", myMoney.amount, myMoney.type);
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
static void Main(string[] args)
{
List<Money> myMoney = new List<Money>
{
new Money{amount = 10, type = "US"},
new Money{amount = 20, type = "US"}
};
}
class Money
{
public int amount { get; set; }
public string type { get; set; }
}
Run Code Online (Sandbox Code Playgroud) 以下是我的代码摘录:
public class AllIntegerIDs
{
public AllIntegerIDs()
{
m_MessageID = 0;
m_MessageType = 0;
m_ClassID = 0;
m_CategoryID = 0;
m_MessageText = null;
}
~AllIntegerIDs()
{
}
public void SetIntegerValues (int messageID, int messagetype,
int classID, int categoryID)
{
this.m_MessageID = messageID;
this.m_MessageType = messagetype;
this.m_ClassID = classID;
this.m_CategoryID = categoryID;
}
public string m_MessageText;
public int m_MessageID;
public int m_MessageType;
public int m_ClassID;
public int m_CategoryID;
}
Run Code Online (Sandbox Code Playgroud)
我试图在我的main()函数代码中使用以下内容:
List<AllIntegerIDs> integerList = new List<AllIntegerIDs>();
/* some code here that is …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中我使用ajax调用.我想在这个jquery循环中使用break并继续.
$('.submit').filter(':checked').each(function() {
});
Run Code Online (Sandbox Code Playgroud) 每天我都越来越喜欢python.
今天,我写了一些代码,如:
for i in xrange(N):
do_something()
Run Code Online (Sandbox Code Playgroud)
我不得不做N次.但每次都不依赖于i(索引变量)的值.我意识到我正在创建一个我从未使用过的变量(i),并且我认为"在没有这个无用的索引变量的情况下,确实存在更多的pythonic方式."
所以......问题是:你知道如何以更多(pythonic)美丽的方式完成这个简单的任务吗?
在我下面的示例代码中,是否真的需要counter = 0,还是有更好的,更多Python的方式来访问循环计数器?我看到了几个与循环计数器相关的PEP,但是它们被推迟或被拒绝(PEP 212和PEP 281).
这是我的问题的简化示例.在我的实际应用程序中,这是通过图形完成的,整个菜单必须在每一帧重新绘制.但这表明它以简单的文本方式易于重现.
也许我还应该补充一点,我正在使用Python 2.5,尽管如果有特定于2.6或更高版本的方式我仍然感兴趣.
# Draw all the options, but highlight the selected index
def draw_menu(options, selected_index):
counter = 0
for option in options:
if counter == selected_index:
print " [*] %s" % option
else:
print " [ ] %s" % option
counter += 1
options = ['Option 0', 'Option 1', 'Option 2', 'Option 3']
draw_menu(option, 2) # Draw menu with "Option2" selected
Run Code Online (Sandbox Code Playgroud)
运行时,输出:
[ ] Option 0
[ ] Option 1 …Run Code Online (Sandbox Code Playgroud) 我想我有这些类型:
type Attribute struct {
Key, Val string
}
type Node struct {
Attr []Attribute
}
Run Code Online (Sandbox Code Playgroud)
并且我想迭代我的节点的属性来改变它们.
我本以为能够做到:
for _, attr := range n.Attr {
if attr.Key == "href" {
attr.Val = "something"
}
}
Run Code Online (Sandbox Code Playgroud)
但由于attr不是指针,这不起作用,我必须这样做:
for i, attr := range n.Attr {
if attr.Key == "href" {
n.Attr[i].Val = "something"
}
}
Run Code Online (Sandbox Code Playgroud)
有更简单或更快的方式吗?有可能直接从指针中获取指针range吗?
显然,我不想仅仅为迭代更改结构,更详细的解决方案不是解决方案.
有没有办法确定循环是否最后一次迭代.我的代码看起来像这样:
int[] array = {1, 2, 3...};
StringBuilder builder = new StringBuilder();
for(int i : array)
{
builder.append("" + i);
if(!lastiteration)
builder.append(",");
}
Run Code Online (Sandbox Code Playgroud)
现在问题是我不想在最后一次迭代中附加逗号.现在有一种方法可以确定它是最后一次迭代还是我坚持使用for循环或使用外部计数器来跟踪.