尝试在AppComponent的构造函数中初始化类型AUTH的变量(您必须从“@angular/fire/auth”中导入它)。
import { Auth } from '@angular/fire/auth' //import statement
export class AppComponent {
constructor(private auth: Auth){}
//I did this, it worked for me
}
要更快地读取CSV文件,您可以使用 甚至比 fread()
更快。 请参阅此处。
现在使用vroom,
library(vroom)
vroom("https://docs.google.com/spreadsheets/d/170235QwbmgQvr0GWmT-8yBsC7Vk6p_dmvYxrZNfsKqk/pub?output=csv")
#> Rows: 387048 Columns: 14
#> ── Column specification ────────────────────────────────────────────────────────
#> Delimiter: ","
#> chr (6): StationCode, SampleID, WeatherCode, OrganismCode, race, race2
#> dbl (7): WaterTemperature, Turbidity, Velocity, ForkLength, Weight, Count, ...
#> date (1): SampleDate
#>
#> ℹ Use `spec()` to retrieve the full column specification for this data.
#> ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
#> # A tibble: 387,048 × 14
#> StationCode SampleDate SampleID WeatherCode WaterTemperature Turbidity
#> <chr> <date> <chr> <chr> <dbl> <dbl>
#> 1 Gate 11 2000-04-25 116_00 CLD 13.1 2
#> 2 Gate 5 1995-04-26 117_95 CLR NA 2
#> 3 Gate 2 1995-04-21 111_95 W 10.4 12
#> 4 Gate 6 2008-12-13 348_08 CLR 49.9 1.82
#> 5 Gate 5 1999-12-10 344_99 CLR 7.30 1.5
#> 6 Gate 6 2012-05-25 146_12 CLR 55.5 1.60
#> 7 Gate 10 2011-06-28 179_11 RAN 57.3 3.99
#> 8 Gate 11 1996-04-25 116_96 CLR 13.8 21
#> 9 Gate 9 2007-07-02 183_07 CLR 56.6 2.09
#> 10 Gate 6 2009-06-04 155_09 CLR 58.6 3.08
#> # … with 387,038 more rows, and 8 more variables: Velocity <dbl>,
#> # OrganismCode <chr>, ForkLength <dbl>, Weight <dbl>, Count <dbl>,
#> # race <chr>, year <dbl>, race2 <chr>
在2022-07-08创建的 reprex package (v2.0.1)< /sup>
这里的大多数答案无法解释切片的实际问题。他们只解释了切片的良性案例,而不是危险的案例。假设像其他答案一样,您正在处理两个类 a
和 b
,其中 b
从公开派生(公开)
。
在这种情况下,C ++使您可以将 b
的实例传递给 a
的分配操作员(以及复制构造函数)。之所以起作用,是因为 b
的实例可以转换为 const a&amp;
,这是分配运算符和复制构建者期望其参数的原因。
良性案例
B b;
A a = b;
在那里没有任何不好的事 - 您要求 a
的实例,该实例是 b
的副本,这正是您所获得的。当然, a
不包含 b
的某些成员,但是该如何?毕竟,这是一个 a
,不是 b
,因此它甚至没有关于这些成员的听到的,更不用说能够存储他们。
您可能会认为 b2
的危险情况
B b1;
B b2;
A& a_ref = b2;
a_ref = b1;
//b2 now contains a mixture of b1 and b2!
将是 b1
之后的副本。但是,a,不是!如果检查它,您会发现 b2
是弗兰肯斯坦的生物 a
),以及 b2
的一些块(仅包含 b
的块)。哎哟!
发生了什么?好吧,默认情况下,C ++不会将分配运算符视为 Virtual
。因此,行 a_ref = b1
将调用 a
的分配操作员,而不是 b
的分配操作员。这是因为,对于非虚拟函数,声明为(形式: static )类型( a&amp;
)确定哪个函数称为,与实际(形式上: dynamic )类型相反(这将是 b
,因为 a_ref
引用引用实例 b
)。现在, a
的分配操作员显然只知道 a
中声明的成员,因此它将仅复制这些成员,而将成员添加到 b 不变。
解决方案
仅分配给对象部分的 通常毫无意义,但是不幸的是,C ++没有内置的方式禁止此方法。但是,您可以自己滚动。第一步是使分配运算符 virtual 。这将保证始终是实际类型的分配操作员,而不是声明的类型。第二步是使用 dynamic_cast
来验证分配的对象是否具有兼容类型。第三步是在(受保护的!)成员 agiss()
中进行实际分配,因为 b
's nistion> nistion()
可能会想要使用 a
's nistion()
复制 a
's,成员。
class A {
public:
virtual A& operator= (const A& a) {
assign(a);
return *this;
}
protected:
void assign(const A& a) {
// copy members of A from a to this
}
};
class B : public A {
public:
virtual B& operator= (const A& a) {
if (const B* b = dynamic_cast<const B*>(&a))
assign(*b);
else
throw bad_assignment();
return *this;
}
protected:
void assign(const B& b) {
A::assign(b); // Let A's assign() copy members of A from b to this
// copy members of B from b to this
}
};
请注意,为了纯粹的方便, b
's operator =
协变量覆盖返回类型,因为它知道它正在返回一个 b 。
您有三个选择来解决此错误
选择1
从Android/gradle/warpper/gradle-wrapper降级gradle.properties更改
distributionUrl
从
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-all.zip
“到
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
选择2”
进行此链接中找到的更改noreferrer“> https://github.com/nzme/react-native-native-ad-manager/blob/master/android/android/build.gradle
另外,将这些行更改
def DEFAULT_COMPILE_SDK_VERSION = 28
def DEFAULT_BUILD_TOOLS_VERSION = '28.0.3'
为此
def DEFAULT_COMPILE_SDK_VERSION = 30
def DEFAULT_BUILD_TOOLS_VERSION = '30.0.2'
选择3 3
查找替代了React-Native-Ad-Ad-Manager,它已更新和维护Gradle 7+
希望这对您有帮助
我个人将在功能中移动数据争吵代码,然后使用 lapply
循环循环您的数据帧列表。
library(dplyr)
df_list <- list(df, df, df)
prep_data <- function(x) {
x %>%
group_by(Item) %>%
summarise(
outlier = mean(Cost),
offset = outlier * 0.6,
higher_value = outlier + offset,
lower_value = outlier - offset
) %>%
left_join(x, by = "Item") %>%
transmute(Item, Cost, Outlier = ifelse(Cost < lower_value | Cost > higher_value, "Y", "N"))
}
df_prep <- lapply(df_list, prep_data)
lapply(df_prep, head, 2)
#> [[1]]
#> # A tibble: 2 × 3
#> Item Cost Outlier
#> <fct> <dbl> <chr>
#> 1 Book A 5 N
#> 2 Book A 3.5 N
#>
#> [[2]]
#> # A tibble: 2 × 3
#> Item Cost Outlier
#> <fct> <dbl> <chr>
#> 1 Book A 5 N
#> 2 Book A 3.5 N
#>
#> [[3]]
#> # A tibble: 2 × 3
#> Item Cost Outlier
#> <fct> <dbl> <chr>
#> 1 Book A 5 N
#> 2 Book A 3.5 N
如果要通过循环的进行操作,则可以达到相同的结果:
df_prep <- list()
for (i in seq_along(df_list)) {
df_prep[[i]] <- prep_data(df_list[[i]])
}
您可以使用相关的子查询:
SELECT t.teacher_id
, t.first_name
, t.last_name
, c.course_id
, c.course_name
, c.semester
, (
SELECT LISTAGG(s.last_name || ', ' || s.first_name, '; ')
WITHIN GROUP (ORDER BY s.last_name, s.first_name)
FROM enrollment e
INNER JOIN students s
ON (e.student_id = s.student_id)
WHERE e.course_id = c.course_id
) AS students
FROM teachers t
LEFT JOIN courses c
ON t.teacher_id = c.teacher_id
ORDER BY
teacher_id;
对于示例数据,输出:
cotherton_id first_name last_name course_id course_name 学期 学生 101 keith stein 1 几何 2022-2 aaron,信仰;阿尔特曼,莱斯利;库珀,贝丝;克恩,帕蒂; Saladino,丽莎 102 roger 木材 2 trigonometry 2022-2 aaron,信仰;阿尔特曼,莱斯利;库珀,贝丝;克恩,帕蒂; Saladino,丽莎 103 douglas kern 3 cyculus 2022-2 aaron,信仰;阿尔特曼,莱斯利;库珀,贝丝; Coralnick,吉尔;克恩,帕蒂; Saladino,丽莎 104 paul weber 4 化学 2022-2 null 105 jeffrey lebowitz 5 生物学 2022-2 null 106 carol seltzer 6 Physcology 2022-2 null
或者您可以使用 join
s和汇总:
SELECT t.teacher_id
, MAX(t.first_name) AS first_name
, MAX(t.last_name) AS last_name
, c.course_id
, MAX(c.course_name) AS course_name
, MAX(c.semester) AS semester
, LISTAGG(
NVL2(s.student_id, s.last_name || ', ' || s.first_name, NULL),
'; '
) WITHIN GROUP (ORDER BY s.last_name, s.first_name) AS students
, COUNT(s.student_id) AS num_students
FROM teachers t
LEFT OUTER JOIN courses c
ON t.teacher_id = c.teacher_id
LEFT OUTER JOIN (
enrollment e
INNER JOIN students s
ON (e.student_id = s.student_id)
)
ON (e.course_id = c.course_id)
GROUP BY
t.teacher_id,
c.course_id
ORDER BY
t.teacher_id,
c.course_id;
db&lt;&gt; fiddle “ nofollow noreferrer”>在这里
功能
const fetchChat = db.ref("messages/" + username + "/" + receiver + "/");
fetchChat.on("child_added", function (snapshot)
{
const messages = snapshot.val();
const msg = "<li>" + messages.usr + " : " + messages.msg + "</li>";
document.getElementById("messages").innerHTML += msg;
});
只要将孩子添加到消息的目录中,它就会获取聊天的 ,因此,当您将打字状态存储在“ message/” + username +“/” + ceveriver +“ +”/“/”
中时函数 .on
知道您已更改/添加了一些内容,因此发布了消息。这是不确定的,因为消息实际上是空的。您应该在存储 aretheytyping
状态的情况下创建一个新目录,例如“ status/status/ + username +”/“ +接收者 +”/“/”
希望我帮助。
您可以使用类似的内容
l = ['a','b','c']
d = {element:index for index,element in enumerate(l)}
,这些内容将为您提供映射到其索引的每个元素。
如果要设置一些任意价值,请使用
l = ['a','b','c']
d = {element:value for element in l}
要使 github_configuration
block可选,您可以做:
dynamic "github_configuration" {
for_each = var.Environment == "dev" ? [1] : []
content {
account_name = var.Environment == "dev" ? var.AccountName : null
branch_name = var.Environment == "dev" ? var.Branch : null
git_url = var.Environment == "dev" ? var.RepoUrl : null
repository_name = var.Environment == "dev" ? var.RepoName : null
root_folder = var.Environment == "dev" ? var.RepoFolder : null
}
}
}
[1]
确保 for_each
执行一个。 1
的实际值无关紧要。只要列表具有一个元素,就可以是任何值。
@Davide的答案是完全正确的,我只想补充说您可以使用构造函数注入:
private final AgroalDataSource ds;
private final Logger log;
public FindPrepaidSubscriberICCID(AgroalDataSource ds, Logger log) {
this.ds = ds;
this.log = log;
}
构造函数注入倾向于简化可测试性(因为您可以创建对象传递间谍或模拟的实例)。它还确保您不会写入托管字段(因为字段是最终的)。
原因是因为您的 MAP
操作是从已在执行者上发生的事物中读取的。
如果您查看管道:
val result = testRepository.readTable(db, tableName)
.map(testInstance.doSomeOperation)
.count()
您要做的第一件事是 testrepository.readtable(db,tablename)
。如果我们在读取
方法中查看内部,我们会看到您在其中进行 spark.table
操作。如果我们从 api docs ,我们看到以下功能签名:
def table(tableName: String): DataFrame
这不是仅在驱动程序上进行的操作(想象一下阅读阅读在仅在驱动程序上进行的&gt; 1tb的文件中),并创建一个数据框(本身就是一个分布式数据集)。这意味着需要分发 testRepository.ReadTable(db,tableName)
函数,因此您的 testrepository
需要分发对象。
希望这对您有帮助!
从异步函数返回值的另一种方法是传递将从异步函数中存储结果的对象。
这是一个相同的示例:
我正在使用
结果
对象在异步操作期间存储该值。这允许结果即使在异步工作后也可以使用。我经常使用这种方法。我很想知道这种方法的效果如何,其中涉及连续模块的结果对结果进行接线。
Another approach to return a value from an asynchronous function, is to pass in an object that will store the result from the asynchronous function.
Here is an example of the same:
I am using the
result
object to store the value during the asynchronous operation. This allows the result be available even after the asynchronous job.I use this approach a lot. I would be interested to know how well this approach works where wiring the result back through consecutive modules is involved.
如何从异步电话中返回响应?