假设我有一个人员列表,我需要按年龄排序,然后按姓名排序.
来自C#-background,我可以使用LINQ轻松实现所述语言:
var list=new List<Person>();
list.Add(new Person(25, "Tom"));
list.Add(new Person(25, "Dave"));
list.Add(new Person(20, "Kate"));
list.Add(new Person(20, "Alice"));
//will produce: Alice, Kate, Dave, Tom
var sortedList=list.OrderBy(person => person.Age).ThenBy(person => person.Name).ToList();
Run Code Online (Sandbox Code Playgroud)
如何使用Kotlin实现这一目标?
这是我尝试过的(显然是错误的,因为第一个"sortedBy"子句的输出被第二个被覆盖,导致列表仅按名称排序)
val sortedList = ArrayList(list.sortedBy { it.age }.sortedBy { it.name })) //wrong
Run Code Online (Sandbox Code Playgroud) 我尝试使用Instagram oauth API登录但我无法获取用户电子邮件,因为我可以获取个人资料图片,用户网址,评论等等.
那么有人可以告诉我是否有任何选项来获取用户的电子邮件?
这是给你的片段:
print_r($result->data); exit;
// display all user likes
foreach ($result->data as $media) {
$content = "<li>";
// output media
if ($media->type === 'video') {
// video
$poster = $media->images->low_resolution->url;
$source = $media->videos->standard_resolution->url;
$content .= "<video class=\"media video-js vjs-default-skin\" width=\"250\" height=\"250\" poster=\"{$poster}\"
data-setup='{\"controls\":true, \"preload\": \"auto\"}'>
<source src=\"{$source}\" type=\"video/mp4\" />
</video>";
} else {
// image
$image = $media->images->low_resolution->url;
$content .= "<img class=\"media\" src=\"{$image}\"/>";
}
// create meta section
$avatar = $media->user->profile_picture;
$username = $media->user->username;
$comment = $media->caption->text; …Run Code Online (Sandbox Code Playgroud) 假设我们有几十个代表我的域的java POJO,也就是我系统中的数据,它作为我系统不同层之间的对象流动.该系统可以是Web应用程序,也可以是简单的桌面应用程序.域包含的内容并不重要.
在设计我的系统时,我很困惑我应该放置任何验证逻辑.我的POJO(域对象)代表我的数据,这些对象中的一些字段必须符合某些条件,但如果我在我的setter方法中放入了很多验证逻辑,那么告诉调用客户端的唯一方法是抛出异常.如果我不希望系统崩溃,则异常必须是必须捕获和处理的已检查异常.这样做的结果是每次我使用setter-methods(甚至构造函数)创建一个新对象时,我都会重新抛出该异常或使用try-catch块.在许多setter方法上强制使用try-catch是不对的.
所以问题是我应该把我的验证逻辑放在哪里,这样我就不会在我的代码中混淆大量的样板try-catch块和重新抛出.欢迎最优秀的JAVA字节用户加入讨论.
我已经研究过Google,但没有找到关于这个主题的具体讨论,所以我非常热情地等待,以便更深入地了解事情应该如何完成.
我一直在查看一些Google示例代码,他们似乎使用以下代码创建单例:
companion object {
// For Singleton instantiation
@Volatile
private var instance: CarRepository? = null
fun getInstance(carDao: CarDao) =
instance ?: synchronized(this) {
instance ?: CarRepository(carDao).also { instance = it }
}
}
Run Code Online (Sandbox Code Playgroud)
所以我知道这@Volatile意味着
将带注释的属性的JVM支持字段标记为volatile,这意味着对此字段的写入会立即对其他线程可见.
是否所有单身实例都应标记为@Volatile?如果是这样,为什么?
最后,我不明白这个getInstance功能
instance ?: synchronized(this) {
instance ?: CarRepository(carDao).also { instance = it }
}
Run Code Online (Sandbox Code Playgroud)
这到底是做什么的?
更新:来源:谷歌的向日葵
我改变了我自己使用的Repository和Dao名称,但它在Repository文件中是相同的逻辑.
我试过,通过Python中的API库和Instagram和apigee.com提供的API控制台.
我使用请求:GET /tags/tag-name/media/recent.我试过ferrari标签.
除了bio来自标签请求的每个媒体结果的用户字段之外,所有结果都完美填充.
以下是一些结果摘要:
"full_name": "A????????????",
"bio": "",
"id": "435889630"
...
"full_name": "jacky_mitchell",
"bio": "",
"id": "1527609678"
Run Code Online (Sandbox Code Playgroud)
他们都有空白的bio领域.网站字段也是空白的记录.
其他人在旧Instagram组中遇到了同样的问题.
我可能不得不抛弃这个半工作API并嗅探TCP/IP流量并执行一些原始请求.
如何在使用阴影的视图中显示高程ConstraintLayout?
使用Relative和Linear可以执行带阴影的高程来实现列表,但我不能这样做ConstraintLayout.
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#fff"
android:orientation="vertical">
<TextView
android:id="@+id/list_ssid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:elevation="8dp"
android:background="#fff"
android:text="SSID"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@+id/guideline"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/list_ch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:elevation="8dp"
android:background="#fff"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="CH"
app:layout_constraintLeft_toLeftOf="@+id/guideline"
app:layout_constraintRight_toLeftOf="@+id/guideline2"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/list_dB"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:elevation="8dp"
android:background="#fff"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="dB"
app:layout_constraintLeft_toLeftOf="@+id/guideline2"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<android.support.constraint.Guideline
android:id="@+id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.65"
tools:layout_editor_absoluteX="239dp"
tools:layout_editor_absoluteY="0dp" />
<android.support.constraint.Guideline
android:id="@+id/guideline2" …Run Code Online (Sandbox Code Playgroud) 我通过RxJava2执行删除操作,导致我的本地缓存刷新,如下所示:
override fun removeExperience(experienceId: String, placeId: String): Completable {
return from(placesApi.deleteExperience(experienceId, placeId))
.andThen(from(refreshPlace(placeId))
.flatMapCompletable { Completable.complete() }
)
}
Run Code Online (Sandbox Code Playgroud)
因此,只要完成删除操作(Completable完成),就会触发刷新.问题是,有时这种删除操作需要足够长的时间,为用户刚刚离开屏幕,然后将andThen永远不会执行动作的原因是没有用户了,从而在屏幕上的信息是不是最新的了.
有没有办法强制执行此操作?
我正在 android 中编程(但对于这个问题,它可能无关紧要)。我有一个定义如下的 kotlin 地图:
var filters: MutableMap<String, Any?>
Run Code Online (Sandbox Code Playgroud)
我需要将它传递到另一个屏幕(android 中的 Activity),为此我通常使它在 java 中可序列化。但在 kotlin 中,此数据结构不可序列化。让我们看看我想要做什么:
var b = Bundle()
b.putSerializable("myFilter",filters) //- this gives a compile error that filters is not serializable.
Run Code Online (Sandbox Code Playgroud)
我尝试调用 filters.toMap() 但这也不起作用。这是如何在 kotlin 中完成的?我如何将地图发送到 android 中的另一个屏幕?
我基本上想要使用MatchScore对文档进行排序,但是,请提升那些拥有图像的文档.
为此,我的方法是使用提升值向文档添加字段,然后将此值乘以文档_score.
问题是,使用以下代码我无法实现基于两个值的乘法对文档进行排序.Search API返回按_score排序的文档,而不是我传递的SortOptions表达式.
sort_opts = SortOptions(
match_scorer=search.MatchScorer(),
expressions=[
search.SortExpression(
expression='_score * has_img',
direction=search.SortExpression.DESCENDING,
default_value=0.0
)
]
)
options = QueryOptions(
limit=10,
sort_options=sort_opts,
returned_expressions=[
FieldExpression('score', '_score * has_img'),
FieldExpression('normalscore', '_score * 1')
]
)
index = search.Index(name='Search', namespace='search')
results = index.search(
query=Query(
query_string=search_query,
options=options
)
)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,为了进行调试,我返回了我想要排序的分数以及默认分数.但它们会返回正确的值,但文档仍按默认分数排序.
我做错了什么想法?
sorting google-app-engine boost google-search-api python-2.7
我一直在尝试创建一个包含各种模块的Google App Engine项目,每个模块都有各种版本; 但我无法让它发挥作用.
我浏览了谷歌模块指南网站上的所有内容,但他们对应用程序层次结构的描述非常模糊.我下载了一个简单的测试应用程序,看看它是如何工作的(我无法开始工作).
这是应用程序的结构:http: //www.iteratorium.eu/stackoverflow/structure.jpg
整个事情都在这里压缩:http: //www.iteratorium.eu/stackoverflow/flask_app.zip
有三个模块:默认模块,my-module和mobile-frontend,my-module和mobile-frontend在目录v_one和v_two中都有两个版本.每个版本都有自己的.yaml文件,其中包含一个处理程序(为了测试目的而保持简单)
结构至少是否正确?当我通过dev_appserver.py文件加载应用程序时,只要我没有加载同一模块的两个版本,一切都很好.在这种情况下,发生这种情况:
me@MY_COMPUTER:~/flask_app$ python ~/google_appengine/dev_appserver.py dispatch.yaml app.yaml mobile-frontend/v_one/mobile-frontend.yaml my-module/v_one/my-module.yaml my-module/v_two/my-module.yaml
Run Code Online (Sandbox Code Playgroud)
回溯结果如下:
google.appengine.tools.devappserver2.errors.InvalidAppConfigError: Duplicate module: my-module
Run Code Online (Sandbox Code Playgroud)
(两个版本都通过appcfg.py上传到appengine而没有任何错误,可能只有localhost服务器无法处理多个版本)
如果我只加载每个模块的一个版本,一切正常,但模块无法从lib目录导入任何内容.http://localhost:8082/mobiler通过浏览器访问会导致终端:
from flask import Flask
ImportError: No module named flask
Run Code Online (Sandbox Code Playgroud)
我在appengine_config.py文件中定义了lib文件夹的路径,但它似乎不适用于模块.这就是我停下来并决定来到这里的地方,因为我甚至不确定结构是否正确,我可能会对此完全消失.
那么......我有多远?