有人可以解释为什么push的行为方式如下所示?
基本上,我想打印由填充的数组值push,以及unshift.
当我尝试打印push使用数组索引填充的数组内容时,它总是在数组顶部打印元素,而填充的数组则unshift打印基于数组索引的数组内容.我不明白为什么.
#!/usr/bin/perl
@names = ("Abhijit","Royal Enfield","Google");
@numbers=();
$number=1;
$i=0;
foreach $name (@names) {
#print $_ . "\n";
$number=$number+1;
#push(@numbers,($number));
unshift(@numbers,($number));
print("Array size is :" . @numbers . "\n");
$i=$i+1;
print("Individual Elements are:" . @numbers[i] . "\n");
pop(@numbers);
}
rhv:/var/cl_ip_down>./run.sh
Array size is :1
Individual Elements are:2
Array size is :2
Individual Elements are:3
Array size is :3
Individual Elements are:4
Run Code Online (Sandbox Code Playgroud)
#!/usr/bin/perl
@names = ("Abhijit","Royal Enfield","Google");
@numbers=();
$number=1;
$i=0; …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种Google Collections方法,该方法返回一系列不返回null的供应商的第一个结果.
我正在寻找使用Iterables.find(),但在我的Predicate中,我必须调用我的供应商将结果与null进行比较,然后在find方法返回供应商后再次调用它.
我有一个Parent类,它有两个子集合ChildCollectionA和ChildCollectionB.ChildCollectionA被映射为关联,并具有自己的ID:
HasMany(parent => parent.ChildCollectionA)
.KeyColumn("IDParent")
.AsBag().Cascade.AllDeleteOrphan();
Run Code Online (Sandbox Code Playgroud)
和ChildCollectionB映射有一个组件列表:
HasMany(parent => parent.ChildCollectionB)
.Table("ChildCollectionBTable")
.KeyColumn("IDParent")
.Component(m=>
{
m.References(childB => childB.Task, "IDTask").Not.LazyLoad().Not.Nullable();
m.Map(childB => childB.Date, "Date").Not.Nullable();
}
)
.AsBag().Cascade.AllDeleteOrphan();
Run Code Online (Sandbox Code Playgroud)
我现在需要DataBase中的所有Parent,因为我必须执行一些需要ChildCollectionA和ChildCollectionB的操作.
所以我不得不急于加载它们,我使用获取模式首先急切加载ChildCollectionA:
var queryParents = session.CreateCriteria().SetFetchMode("ChildCollectionA",FetchMode.Eager).Add(Expression.Le("ParentDate",endDate));
它返回492个父母(应该是481),我执行的操作的总价值是32,847.46€(应该是30,790.87€).所以我必须消除父副本:
var queryParents = session.CreateCriteria<Parent>()
.SetFetchMode("ChildCollectionA", FetchMode.Eager)
.Add(Expression.Le("ParentDate",endDate))
.SetResultTransformer(new DistinctRootEntityResultTransformer());
Run Code Online (Sandbox Code Playgroud)
我只用ChildCollectionB尝试了同样的热切加载
var queryParents = session.CreateCriteria<Parent>()
.SetFetchMode("ChildCollectionB", FetchMode.Eager)
.Add(Expression.Le("ParentDate",endDate))
.SetResultTransformer(new DistinctRootEntityResultTransformer());
Run Code Online (Sandbox Code Playgroud)
在这两种情况下返回481父母OK,价值为30,790.87€OK.
但是我需要同时加载两个集合,我这样做了:
var queryParents = session.CreateCriteria<Parent>()
.SetFetchMode("ChildCollectionA", FetchMode.Eager)
.SetFetchMode("ChildCollectionB", FetchMode.Eager)
.Add(Expression.Le("ParentDate",endDate))
.SetResultTransformer(new DistinctRootEntityResultTransformer());
Run Code Online (Sandbox Code Playgroud)
它返回了481个父母,价值为32,602.57欧元(应该是30,790.87欧元).
现在返回的父项数是正确的,但在其他地方有重复项,值取决于集合而不是父项,因此重复项必须位于ChildCollections中的某个位置.
现在我正在使用一个丑陋的解决方案:
var queryParents = session.CreateCriteria<Parent>()
.SetFetchMode("ChildCollectionA", FetchMode.Eager)
.Add(Expression.Le("ParentDate",endDate))
.SetResultTransformer(new DistinctRootEntityResultTransformer());
parents= queryParents.List<Parent>(); …Run Code Online (Sandbox Code Playgroud) 是否有可能删除哈希window.location而不会导致页面跳转到顶部?我需要能够修改哈希而不会引起任何跳转.
我有这个:
$('<a href="#123">').text('link').click(function(e) {
e.preventDefault();
window.location.hash = this.hash;
}).appendTo('body');
$('<a href="#">').text('unlink').click(function(e) {
e.preventDefault();
window.location.hash = '';
}).appendTo('body');
Run Code Online (Sandbox Code Playgroud)
在这里查看实例:http://jsbin.com/asobi
当用户单击" 链接 "时,修改的哈希标记没有任何页面跳转,因此工作正常.
但是当用户点击" 取消链接 "时,删除了has标记,页面滚动跳转到顶部.我需要删除没有这种副作用的哈希.
我正在将VB.NET Web应用程序从Visual Studio 2005(.NET 2.0)迁移到Visual Studio 2008(.NET 3.5),虽然它很简单但我遇到了一个需要一些时间来解决的问题.
有问题的代码如下:
Dim serviceArray = New SecurityLayer.Model.Service()
serviceArray = new SecurityLayer.SecurityBusinessController.GetServices(userId)
Run Code Online (Sandbox Code Playgroud)
哪个在VS2005/.NET2.0中编译但在VS2008/.NET3.5中失败,并出现以下错误:
"SecurityLayer.Model.Service的1维数组"类型的值无法转换为"SecurityLayer.Model.Service"
这表明serviceArray未声明为数组,并且在阅读MSDN文档时,它看起来不像版本之间的语法有所改变,但它声明无论是否传入任何值,都需要花括号.果然,在它的声明中添加花括号可以解决问题(编译器移动到下一个实例!).
Dim serviceArray = New SecurityLayer.Model.Service(){}
serviceArray = new SecurityLayer.SecurityBusinessController.GetServices(userId)
Run Code Online (Sandbox Code Playgroud)
更新此声明的所有实例后,代码现在构建并按预期运行.
Option Explicit和Option Strict在两个IDE中是相同的,所以它不能是那个(或者至少是我假设的).
所以我的问题是,为什么这个构建在VS2005/.NET2.0而不是VS2008/.NET3.5中?
提前致谢
在我的应用程序中,组件必须动态更改.我有一个数据表,因为我有两列,首先是<h:selectoneMenu>在菜单中我有两个数据(数据是1和2)如果选择1然后<h:inputText>应该出现一个如果选择2则<h:selectoneMenu>应该出现.需要帮助吗?
我的JSF
<h:selectOneMenu id="menu" value="#{sample.data}" rendered="true" valueChangeListener="#{sample.change}">
<f:selectItem itemLabel="Data" itemValue=""/>
<f:selectItems value="#{sample.list1}"/>
<a4j:support event="onchange" reRender="text" />
</h:selectOneMenu>
<h:inputText id="text" value="#{sample.input}" rendered="#{sample.status}" />
Run Code Online (Sandbox Code Playgroud)
我的Manged Bean类
public class Sample {
private Boolean status; //Getter & Setter
private List<SelectItem> list1; //Setter
private String input; //Getter & Setter
private String data; //Getter & Setter
public void change(ValueChangeEvent event){
System.out.println((String)event.getNewValue());
if(((String)event.getNewValue()).equals("value1")){
status=true;
}
else if(((String)event.getNewValue()).equals("value2")){
status=false;
}
}
public Boolean getStatus(){
if(status==null){
status=true;
}
return status;
}
public List<SelectItem> …Run Code Online (Sandbox Code Playgroud) 我正在开发一个使用 gridview 的 rowupdating 事件的应用程序。我在列中使用 templatefield,因此无法从 gridview 中的文本框获取新值。我如何从文本框中获取新值。以下是我在 rowupdating 中的代码:
protected void gviewTemplate_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
gviewTemplate.EditIndex = -1;
string rowNum = ViewState["ID"].ToString();
Label lbl2 = (Label)gviewTemplate.Rows[e.RowIndex].FindControl("lblTemplateName");
Label lbl1 = (Label)gviewTemplate.Rows[e.RowIndex].FindControl("lblUploaded");
TextBox txtTempName = (TextBox)gviewTemplate.Rows[e.RowIndex].FindControl("txtTemplateName");
TextBox txtHeading = (TextBox)gviewTemplate.Rows[e.RowIndex].FindControl("txtHeading");
TextBox txtCoupon = (TextBox)gviewTemplate.Rows[e.RowIndex].FindControl("txtCouponText");
TextBox txtBrand = (TextBox)gviewTemplate.Rows[e.RowIndex].FindControl("txtBrandName");
TextBox txtSearchText = (TextBox)gviewTemplate.Rows[e.RowIndex].FindControl("txtSearch");
TextBox txtDiscount = (TextBox)gviewTemplate.Rows[e.RowIndex].FindControl("txtDiscount");
TextBox txtStartDt = (TextBox)gviewTemplate.Rows[e.RowIndex].FindControl("txtStartDt");
}
Run Code Online (Sandbox Code Playgroud)
我想从这些文本框中获取新值,但它总是给我旧值。是的,e.Newvalues 没有给我任何东西。它总是空的。这是我的 gridview 设计的一小段摘录:
<asp:GridView runat="server" AutoGenerateColumns="False"
ID="gviewTemplate" onrowdatabound="gviewTemplate_RowDataBound" DataKeyNames="F1"
onrowcommand="gviewTemplate_RowCommand"
onrowediting="gviewTemplate_RowEditing"
onrowcancelingedit="gviewTemplate_RowCancelingEdit"
onrowupdating="gviewTemplate_RowUpdating"
onrowdeleting="gviewTemplate_RowDeleting"
onrowupdated="gviewTemplate_RowUpdated">
<Columns>
<asp:TemplateField HeaderText="Uploaded …Run Code Online (Sandbox Code Playgroud) 可能重复:
如何在android中更改Toast的位置?
是否有任何方法可以在应用程序中对齐toast消息.默认情况下,它始终显示在应用程序的底部.我是这样做的... Toast.makeText(这个,"你好!",Toast.LENGTH_LONG).show(); 谢谢
在我的一个PHP项目中,imagecreatefrompng抱怨说图像"不是有效的PNG文件".
Warning: imagecreatefrompng() [function.imagecreatefrompng]:
'/.../...png' is not a valid PNG file in /.../...php on line ...
Run Code Online (Sandbox Code Playgroud)
我很确定,该文件是有效的,因为我可以在任何程序中打开它.所以我想知道还有什么可能导致这个警告.
有人知道imagecreatefrompng背后的细节还是之前有过类似的问题?
谢谢你的帮助,
蒂莫
我在Qt有一个窗口,我正在画一幅画.现在我想把进度条放在它上面.我怎样才能做到这一点?..
我要遵循的步骤
创建一个窗口
在窗口的油漆事件中画画
然后创建QGridLayout布局,添加窗口
显示在它上面.
假设我想在图片窗口的一部分上添加进度条.我怎样才能做到这一点
我不认为它可以在窗口绘制事件中实现.
请帮助我
谢谢