问题列表 - 第21683页

Perl中push和unshift有什么区别?

有人可以解释为什么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)

perl

6
推荐指数
3
解决办法
7428
查看次数

Google Collections供应商和查找

我正在寻找一种Google Collections方法,该方法返回一系列不返回null的供应商的第一个结果.

我正在寻找使用Iterables.find(),但在我的Predicate中,我必须调用我的供应商将结果与null进行比较,然后在find方法返回供应商后再次调用它.

java guava

1
推荐指数
1
解决办法
1500
查看次数

Nhibernate:急切加载两个子集合(一个是组件列表)

我有一个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)

nhibernate

8
推荐指数
1
解决办法
5786
查看次数

如何在不导致页面滚动的情况下删除位置哈希?

是否有可能删除哈希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标记,页面滚动跳转到顶部.我需要删除没有这种副作用的哈希.

javascript jquery fragment-identifier

76
推荐指数
3
解决办法
8万
查看次数

为什么这段代码在VS2005中编译而不是VS2008(VB.NET)

我正在将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中?

提前致谢

vb.net syntax visual-studio-2005 visual-studio-2008

3
推荐指数
1
解决办法
267
查看次数

在JSF中动态添加组件?

在我的应用程序中,组件必须动态更改.我有一个数据表,因为我有两列,首先是<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)

java jsf

0
推荐指数
1
解决办法
5567
查看次数

rowupdating 没有给出新值

我正在开发一个使用 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)

gridview

0
推荐指数
1
解决办法
6672
查看次数

如何在Android中对齐吐司

可能重复:
如何在android中更改Toast的位置?

是否有任何方法可以在应用程序中对齐toast消息.默认情况下,它始终显示在应用程序的底部.我是这样做的... Toast.makeText(这个,"你好!",Toast.LENGTH_LONG).show(); 谢谢

android

1
推荐指数
2
解决办法
3591
查看次数

imagecreatefrompng(PHP)的问题

在我的一个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背后的细节还是之前有过类似的问题?

谢谢你的帮助,

蒂莫

php png gd image gdlib

6
推荐指数
1
解决办法
2万
查看次数

如何在Qt中将一个小部件放在另一个小部件上

我在Qt有一个窗口,我正在画一幅画.现在我想把进度条放在它上面.我怎样才能做到这一点?..

我要遵循的步骤

  1. 创建一个窗口

  2. 在窗口的油漆事件中画画

  3. 然后创建QGridLayout布局,添加窗口

  4. 显示在它上面.

假设我想在图片窗口的一部分上添加进度条.我怎样才能做到这一点

我不认为它可以在窗口绘制事件中实现.

请帮助我

谢谢

qt symbian qt4 grid-layout progress-bar

10
推荐指数
1
解决办法
7355
查看次数