是否可以在 Javascript/Typescript 中创建类似 Kotlin 的作用域函数?有没有图书馆可以做到这一点?
参考: https: //kotlinlang.org/docs/reference/scope-functions.html
我们的项目中有许多不同的构造,口味和尺寸。但是在更新到Android Studio 3.5之后,我们注意到了一个奇怪的行为:当我们在存在多个构建变体的文件的某些lambda中创建断点时,调试器将无法正常工作,并且在文件中被击中(相同名称和软件包)。有趣的是,只有当断点设置为在lambda的主体中触发并且工作正常时,才会发生整个问题
因此,总而言之,要重现此问题,您必须:
X两种口味的某行上包含lambda的代码现在,只会发生以下两种情况之一,但不会同时发生:
X,它将在同一行上中断,但在风味B的文件中X,它将在同一行中断,但在风味A文件中以下是我们尝试重现该问题时的一些屏幕截图:
ActualFlavor的AuthRepository(活动内部版本):

所以问题是我们在做什么错?还是现在真的是Android Studio中的问题?
Android Studio版本= 3.5 kotlin版本= 1.3.50 build:gradle版本= 3.5.1
我正在创建一个公共库类的对象,该对象在其代码中使用某些包私有类的对象。该包私有类有一些格式错误的逻辑。现在我想改变逻辑。除了下载库、更改其代码然后将其作为模块导入之外,您知道如何做到这一点吗?
到目前为止我所做的:
我通过创建一个具有相同名称的新自定义包来创建一个具有相同名称的新类。我的意思是我在根文件夹中创建了一个包com.abc.xyz并X在其中创建了一个类。但问题是我的代码仍然使用该类的旧库版本X而不是这个新版本。我通过在我的类中附加调试器点来检查这一点X。有趣的是,当我浏览 Android Studio IDE 的代码导航工具时,它显示我的Y类正在使用我的X类版本,而不是库作者的版本。所以第二个问题是,这种技术在 Kotlin 中是否可行,如果可以,那么我做错了什么?
我通过在某处阅读以下几行得到了上述想法:
使用 Java,封装很容易被破坏,因为外部代码可以在您的代码使用的同一包中定义类,从而访问您的包私有声明
我知道如何使用简单的DataSnapshot对象解析到任何Java类public T getValue (Class<T> valueType).但是在Firebase 3.0之后我无法将以下数据解析到我的Java类,因为它包含一个我收到NULL的自定义类型实例.
注意:在Firebase 3.0之前,相同的逻辑工作正常.我想它是因为现在Firebase使用的是GSON而不是JACKSON.如果我错了,请纠正我
数据:
{
"address" : "DHA karachi",
"addresstitle" : "DHA karachi",
"logoimage" : {
"bucketname" : "test2pwow",
"id" : "zubairgroup",
"mediaType" : "image/png",
"source" : 1,
"url" : "https://pwowgroupimg.s3.amazonaws.com/zubairgroup1173.png?random=727"
},
"title" : "zubairghori"
}
Run Code Online (Sandbox Code Playgroud)
Group.java
public class Group {
public String address;
public String addresstitle;
public LogoImage logoimage;
public Group(){}
}
Run Code Online (Sandbox Code Playgroud)
LogoImage.java
public class LogoImage {
public String bucketname;
public String id;
public LogoImage(){}
}
Run Code Online (Sandbox Code Playgroud)
代码如下:
Group group = datasnapshot.getValue(Group.class);
Run Code Online (Sandbox Code Playgroud)
它不会将 …

Activity-scoped监听器的含义是什么?又是怎样从一个简单的addOnCompleteListener喜欢不同这个!
android firebase firebase-authentication firebase-realtime-database
我知道闭包是如何工作的,但我无法理解在没有详尽的依赖项数组的情况下如何在 React 中创建过时的闭包。useEffect为此,我尝试复制一个过时的闭包,就像在 React 中一样,useEffect而不使用useEffect,但我无法创建它。我的代码不会创建陈旧的闭包,而是在每个时间间隔记录正确的值。您能否看一下下面的代码片段并告诉我:
我究竟做错了什么?useEffect当我们不提供完整的依赖项数组时,我应该怎么做才能创建一个像 React 中那样的陈旧闭包?(参考代码在文末)
当我们没有在 useEffect 中提供详尽的依赖项时,为什么会创建一个过时的闭包?为什么钩子回调中的代码useEffect不像普通函数那样只使用词法范围并打印实际值?
function createIncrement(incBy) {
let value = 0;
function increment() {
value += incBy;
console.log(value);
}
function useEffect(fun) {
fun()
}
useEffect(function() {
setInterval(function log() {
// what should I do to create a stale closure here?
// So that if I change the value it should show me the old value
// as it does when using …Run Code Online (Sandbox Code Playgroud)我想问的是:
我发现,如果我强制停止Messenger和Facebook,我仍然会收到消息,但比平常晚一些。另外,在Messenger,Facebook,Slack和Skype中有一个“允许后台活动”选项,当我禁用它时,我根本不会收到任何通知。有趣的是,WhatsApp在其应用程序信息中没有此选项,如果我强制停止WhatsApp,它只会停止向我显示消息通知。
android ×4
kotlin ×3
firebase ×2
javascript ×2
closures ×1
debugging ×1
java ×1
json ×1
oop ×1
react-hooks ×1
reactjs ×1
socket.io ×1
typescript ×1
websocket ×1