我使用此代码来反转$ @中的命令行参数 我的代码是
{
HashMap postData = new HashMap();
PostResponseAsyncTask taskInsert = new PostResponseAsyncTask(slider2.this,
postData, new AsyncResponse() {
@Override
public void processFinish(String s) {
productList = new JsonConverter<product_main_list>().toArrayList(s, product_main_list.class);
dict = new BindDictionary<>();
dict.addStringField(R.id.t1, new StringExtractor<product_main_list>() {
@Override
public String getStringValue(product_main_list product, int position) {
// Toast.makeText(slider2.this, "name "+position, Toast.LENGTH_SHORT).show();
return product.name;
}
});
dict.addDynamicImageField(R.id.im1, new StringExtractor<product_main_list>() {
@Override
public String getStringValue(product_main_list product, int position) {
// Toast.makeText(slider2.this, "im "+position, Toast.LENGTH_SHORT).show();
String link = "<link>";
return link;
}
}, new DynamicImageLoader() {
@Override
public void loadImage(String url, ImageView view) {
Picasso.with(slider2.this)
.load(url)
// .placeholder(R.mipmap.ic_launcher)
// .error(R.mipmap.ic_launcher)
.resize(300, 300)
.centerCrop()
.into(view);
}
});
// Toast.makeText(slider2.this, "s", Toast.LENGTH_SHORT).show();
adapter = new FunDapter<>(slider2.this, productList, R.layout.activity_main, dict);
lvProduct.setAdapter(adapter);
}
});
taskInsert.execute("<link of php file in server>");
}
我无法理解这是如何运作的。任何人都可以帮助我吗?
答案 0 :(得分:2)
$@
获取所有参数,空格分隔(如果参数包含空格,则无法正常工作,请使用"$@"
)。然后for循环接受变量y
,它变为空,并将当前参数x
放在它前面:y=$x""$y
。如果我有参数a
b
c
,那么y=a
... y="b a"
... y="c b a"
答案 1 :(得分:0)
在SOF中,对于代码块使用```,对于内联代码使用`。
此代码循环遍历$@
,并在结果($y
)前面连接每个代码。
例如,当./program.sh a b c
,for
语句循环于"a"
,"b"
,"c"
以及每个循环{{ 1}}是
$y
("a"
)前面联合"$y"
。结果是""
"a"
("b"
)前面联合"$y"
。结果是"a"
"ba"
("c"
)前面联合"$y"
。结果是"ba"
通过这些步骤,你得到了反向字符串。
如果您在"cba"
和" "
之间添加$x
,您将获得完全相反的字符串,即$y