sách gpt4 ăn đã đi

Cách gắn thẻ các mục theo mảng chức năng lọc theo tên chức năng lọc, trơn tru khi tôi xác định chức năng lọc mới(Cách gắn thẻ các mục theo mảng chức năng lọc theo tên chức năng lọc, trơn tru khi tôi xác định chức năng lọc mới)

In lại Tác giả: trợ lý lỗi Thời gian cập nhật: 25-10-2023 19:13:09 28 4
mua khóa gpt4 giày nike



Tôi muốn giữ một danh sách các hàm lọc và gắn thẻ các mục theo các bộ lọc trả về giá trị true. Điều này đang tiến gần nhưng chưa hẳn.

Tôi muốn giữ một danh sách các chức năng lọc và đánh dấu các mục bằng bộ lọc trả về giá trị đúng. Điều này gần nhưng không hoàn toàn.


fn adf(_bs: Bs) -> bool {
ĐÚNG VẬY
}

fn bodens(_bs: Bs) -> bool {
SAI
}


#[derive(Bản sao, Sao chép)]
cấu trúc Bs;

cấu trúc MyTagger;

triển khai MyTagger {
fn từ_cây(&self, cây: Vec) -> Vec {

hãy thay đổi fns: Vec<&dyn Fn(Bs) -> bool> = Vec::new();
fns.push(&adf);
fns.push(&boden's);

hãy để mut res = Vec::new();
cho đường dẫn trong cây {
cho adf trong fns.iter() {
nếu adf(đường dẫn) {
đẩy(std::stringify!(adf).to_string());
}
}
}
độ phân giải
}
}

Vấn đề chính là std::stringify! luôn trả về "adf", có thể là tên biến tôi đã khai báo là adf.

Vấn đề chính là std::stringify! Luôn trả về "ADF", có thể là tên biến tôi đã khai báo là ADF.


Vấn đề thứ hai là tôi cần quản lý danh sách theo cách thủ công khi tôi xác định các hàm lọc mới, về cơ bản là đẩy chúng vào Ví dụ mảng và tăng độ dài của mảng tĩnh.

Vấn đề thứ hai là khi xác định các hàm lọc mới, tôi cần quản lý danh sách theo cách thủ công, về cơ bản là đẩy chúng vào mảng FNS và tăng độ dài của mảng tĩnh.


Thêm câu trả lời

play.rust-lang.org/…

Chơi.rust-lang.org/…

Danh sách các hàm lọc có phải là hằng số không?

Danh sách hàm lọc có phải là hằng số không?

Khuyến nghị câu trả lời tuyệt vời

Đối với vấn đề đầu tiên của bạn, bạn không cần phải xâu chuỗi bất cứ thứ gì, bạn chỉ cần lưu trữ mọi thứ như fn(Bs) -> bool (con trỏ hàm tĩnh). Bạn có thể lưu trữ chúng trong các bộ sưu tập và kiểm tra xem chúng có giống nhau không.

Đối với câu hỏi đầu tiên của bạn, bạn không cần phải tuần tự hóa bất kỳ thứ gì, bạn chỉ cần lưu trữ mọi thứ dưới dạng fn(Bs)->bool (con trỏ hàm tĩnh). Bạn có thể lưu trữ chúng trong một bộ sưu tập và kiểm tra xem chúng có bằng nhau không.


Đối với vấn đề thứ hai, có lẽ bạn có thể định nghĩa các vị ngữ là các hàm ẩn danh trong một lát cắt tĩnh và xác định chúng theo chỉ mục của chúng:

Đối với câu hỏi thứ hai, có lẽ bạn có thể định nghĩa các vị từ là các hàm ẩn danh trong một lát cắt tĩnh và xác định chúng theo chỉ mục của chúng:


tĩnh DỰ ĐOÁN: &[fn(Bs) -> bool] = &[
|_| đúng,
|_| đúng,
|_| đúng,
];

Nếu bạn vẫn cần một nhận dạng tốt, bạn có thể liên kết trực tiếp với một cái tên:

Nếu bạn vẫn cần một ID tốt, bạn có thể liên hệ trực tiếp với một tên ở một mức độ nhất định:


tĩnh DỰ ĐOÁN: &[(&str, fn(Bs) -> bool)] = &[
("foo", |_| đúng),
("thanh", |_| đúng),
("baz", |_| đúng),
];

hoặc duy trì một phần tên riêng biệt thứ hai.

Hoặc duy trì một phần tiêu đề riêng biệt thứ hai.


Dù bằng cách nào trong những trường hợp đó, bạn có thể muốn lưu trữ chỉ mục của hàm vị ngữ thay vì các con trỏ hàm, vì điều đó giúp việc truy xuất tên dễ dàng hơn (ngoài ra, tùy thuộc vào ngữ cảnh/tên, bạn có thể xác định vị ngữ theo chỉ mục của chúng).

Dù bằng cách nào, trong những trường hợp này, bạn có thể muốn lưu trữ chỉ mục của hàm vị ngữ (S) thay vì con trỏ hàm, vì điều đó giúp truy xuất tên dễ dàng hơn (cũng tùy thuộc vào ngữ cảnh/tên, bạn có thể chỉ cần chuyển nó lập chỉ mục để xác định vị ngữ).



Tôi sẽ đi với một trong Cách tiếp cận của Masklin, nhưng nếu bạn muốn tạo chuỗi dựa trên tên hàm, bạn cũng có thể thực hiện bằng cách sử dụng macro (trong đó chuỗi hóa hoạt động tương tự như những gì bạn có thể mong đợi):

Tôi sẽ sử dụng một trong các phương thức của Masklinn, nhưng nếu bạn muốn tạo một chuỗi dựa trên tên hàm, bạn cũng có thể sử dụng macro (trong đó stringify hoạt động tương tự như những gì bạn có thể mong đợi):


    công khai fn từ_cây(&self, cây: Vec) -> Vec<&'static str> {
macro_rules! phải {
($($adf:expr),* $(,)?) => {{
hãy để mut res = Vec::new();
cho đường dẫn trong cây {
(
nếu $adf(đường dẫn) {
res.push(chuỗi hóa!($adf));
}
)*
}
độ phân giải
}}
}
phải!(
adf,
sàn nhà,
)
}

Nếu danh sách các vị ngữ trở nên dài hoặc thường xuyên thay đổi, bạn cũng có thể tạo DỰ ĐOÁN với một macro để tránh lặp lại tên hàm:

Nếu danh sách vị từ dài hoặc thay đổi thường xuyên, bạn cũng có thể sử dụng macro để tạo vị từ nhằm tránh trùng lặp tên hàm:


macro_rules! các vị từ {
($($pred:expr),* $(,)?) => {{
[
$((stringify!($pred), $pred)),*
]
}}
}
tĩnh DỰ ĐOÁN: &[(&str, fn(Bs) -> bool)] = &predicates![
đồ ăn,
thanh,
căn cứ,
];

Thêm câu trả lời
28 4 0
trợ lý lỗi
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress