在Kotlin中,如果要使用该元素forEach,可以使用it关键字.所以现在我想知道如果我有这样的forEach内部我应该怎么做forEach:
list.forEach {
val parent = it
it.forEach {
// `it` now become the element of the parent.
}
}
Run Code Online (Sandbox Code Playgroud)
我认为只为命名约定定义一个新变量是如此愚蠢.有这个问题的任何其他解决方案?
我试图在Kotlin Koans解决任务#6(DataClass).当我在代码中使用普通类时,测试用例失败了.
这是我的数据类代码:
data class Person(val name: String, val age: Int)
fun task6(): List<Person> {
return listOf(Person("Alice", 29), Person("Bob", 31))
}
Run Code Online (Sandbox Code Playgroud)
这是数据类的结果:
[Person(name=Alice, age=29), Person(name=Bob, age=31)]
Run Code Online (Sandbox Code Playgroud)
这是我正常类的代码:
class Person(val name: String, val age: Int)
fun task6(): List<Person> {
return listOf(Person("Alice", 29), Person("Bob", 31))
}
Run Code Online (Sandbox Code Playgroud)
这是正常类的结果:
[i_introduction._6_Data_Classes.Person@4f47d241, i_introduction._6_Data_Classes.Person@4c3e4790]
Run Code Online (Sandbox Code Playgroud)
这是否意味着Kotlin中的普通类和数据类之间存在差异.如果是,那是什么?
更新:
谢谢@Mallow,你是对的.这样可行:
class Person(val name: String, val age: Int) {
override fun toString(): String {
return "Person(name=$name, age=$age)"
}
}
fun task6(): List<Person> {
return listOf(Person("Alice", 29), Person("Bob", 31)) …Run Code Online (Sandbox Code Playgroud) 我Text在一个GestureDetector. 在onTap当我触摸回调只通知Text而不是空的空间里面我Container。如何让这个通知就像我触摸按钮一样?
+------------------------------------------------+
| Very very very long long ?ng long text view |
| Short ?xt ? |
+------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
Tapped。我的源代码:
ListView.separated(
itemCount: _listModel.length,
padding: EdgeInsets.only(left: NOTIFICATION_LEFT_SPACE),
separatorBuilder: (context, index) => Divider(),
itemBuilder: (BuildContext context, int index) => GestureDetector(
child: Container(
child: Hero(
tag: _listModel[index].title,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text('Very very very long long long long text view'),
SizedBox(height: 10),
Text('Short text') …Run Code Online (Sandbox Code Playgroud) 中的NavigatorState类Flutter#navigator.dart有 2 个具有类似行为的方法。FlutterpushReplacementNamed和popAndPushNamedFlutter 有什么区别?
pushReplacementNamed
通过推送名为 [routeName] 的路线替换导航器的当前路线,然后在新路线完成动画处理后处理之前的路线。
popAndPushNamed
从导航器弹出当前路线并在其位置推送命名路线。
我的布局中有一个EditText和一个Button.在编辑字段中写入并单击此按钮后 go back my fragment,我想隐藏虚拟键盘.我认为有一个简单的,但我尝试了某种方式,它不起作用:
该代码显示了如何Button工作:
private void onButtonClicked(){
getActivity().getSupportFragmentManager().popBackStack();
}
Run Code Online (Sandbox Code Playgroud)
某些解决方案的代码,但这无济于事.这个代码我用,hideSoftInputFromWindow但是当我调用'EditText.getWindowToken()'时,它不会隐藏软键盘(我也将0值更改为InputMethodManager.HIDE_IMPLICIT_ONLY或InputMethodManager.HIDE_NOT_ALWAYS并且它不起作用):
EditText myEditText = (EditText) findViewById(R.id.myEditText);
InputMethodManager imm = (InputMethodManager)getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
Run Code Online (Sandbox Code Playgroud)
使用此代码,在此应用程序的另一个屏幕中,它可以工作.这个屏幕是一个活动所以我认为问题是片段的问题.
我的片段代码:
public class ChangeEmailFragment extends BaseFragment {
private TextView mTxtCurrentEmail;
private EditText mEdtNewEmail;
private EditText mEdtPassword;
private TextView mTxtSubmit;
@Override
public void onStop() {
super.onStop();
if (progressDialog != null && progressDialog.isShowing())
progressDialog.dismiss();
if (dialog != null && dialog.isShowing())
dialog.dismiss();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup …Run Code Online (Sandbox Code Playgroud) 我必须在我的项目中获得软键盘高度.我曾经获得设备屏幕高度,并通过应用程序根视图高度减去它.但是,它正常工作,直到我的测试使用键盘建议.不幸的是,在这种情况下,我的解决方案并不正确.我的数字总是比软键盘高度大.我试图谷歌但失败了.
这是我的照片:

我有一个使用Firebase Android SDK的服务器聊天项目.3个月后,我的应用程序有很多用户,他们互相聊天很多.从Firebase加载所有聊天列表需要很长时间.所以现在,我想知道如何使用Android SDK从Firebase分页查询.
我研究了这个链接,找到了这个问题的查询命令但是失败了.我只查询第一行或最后一行的行数.我无法从Firebase中的随机定位查询.示例使用skip和take键查询.
如果您有任何相关文件.请告诉我.谢谢你提前.
我目前正在学习 Flutter。我试图深入了解 Flutter Widget 的生命周期,我想知道为什么StatefulWidget会这样写:
class Example extends StatefulWidget {
@override
_ExampleState createState() => _ExampleState();
}
class _ExampleState extends State<Example> {
// initState
// setState
// ...
@override
Widget build(BuildContext build) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
但不是 :
class Example extends StatefulWidget {
// initState
// setState
// ...
@override
Widget build(BuildContext build) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
我认为后者使来源变得简单。但我不知道他们为什么使用以前的风格?
我对这是否.意味着该图像的当前目录的缩写或它是本地计算机上的当前工作目录的缩写感到困惑。还是.大多数控制台命令中的含义相同,例如本质上是在当前目录中选择全部。
COPY somecode.java .
#copy the rest of the code
COPY . .
Run Code Online (Sandbox Code Playgroud)
这.似乎也意味着在当前目录中找到docker文件。
docker build -t image-tag .
Run Code Online (Sandbox Code Playgroud) 我在 Kotlin 中尝试了下面的这段代码。该print方法缓存输入数据,直到我调用该println方法。
>>> print(1)
>>> print(2)
>>> System.out.print(3)
>>> System.out.print(4)
>>> println(5)
12345
Run Code Online (Sandbox Code Playgroud)
我想像Java一样按数字将数字打印为序列号。我怎么能在 Kotlin 中做到这一点?
更新:也许有人误解了我的问题。
我希望该print方法立即打印输入数据而不是等待println方法。
我现在正在学习Kotlin.
当我阅读Kotlin文档时,它写道我有ranges像Python 这样的技术(例如:1..10).但是,我尝试下面的代码,但失败了.
>>> print(i for i in 1..10)
...
error: expecting ')'
print(i for i in 1..10)
^
error: unexpected tokens (use ';' to separate expressions on the same line)
print(i for i in 1..10)
^
Run Code Online (Sandbox Code Playgroud)
有没有办法通过使用i for i in 1..10类似Python 来缩短此代码.