Đã qua một vài tình huống mà một người muốn vượt qua operators
dưới dạng parameter
trong một hàm hoặc phương pháp. According to this post Java doesn't have that ability, hence need to create an Enum
as the primary workaround.Có cách nào để chuyển toán tử số học và logic như một tham số phương thức trong VBA không?
Ví dụ:
Function doCalcs(ByRef AND as LogicalOperator, ByRef greater ArithmeticOperator)
Mặc dù VBA có thư viện ít hơn nhiều so với .Net, Java, tạo Enum
cũng được hỗ trợ. Có lẽ tôi không biết, vì vậy nếu có khả năng VBA có operator types
hoặc bất kỳ giải pháp nào khác, chúng tôi có thể vượt qua an operator
, bắn điều đó. (Ngoài if else
/case
để kiểm tra chuỗi chứa tham số điều hành .. =)) Tôi yêu cầu là different from what's mentioned here.
- Câu hỏi được hỏi về giảm mã, tối ưu hóa.
Ví dụ: Nếu bạn nhìn vào CountIFS
, nó có khả năng thực hiện trong operators
. Thậm chí nếu ai đó có thể giải thích công việc back-end có thể trong chức năng này,
- Làm thế nào để nó chuyển đổi các chuỗi thành một hợp
operator
? - Đó có phải là cấu trúc
Enum
hoặc bất kỳ thứ gì hiệu quả hơn số đó hoặc nhỏ hơn không?
Câu trả lời cho những câu hỏi này vẫn được chấp nhận.
Điều này thực sự phụ thuộc vào những gì bạn đang làm với thông số bên trong hàm. Điều hữu ích nhất mà tôi có thể nghĩ đến để làm với một toán tử khái niệm được truyền vào như một tham số là sử dụng nó như một cuộc gọi lại. Ví dụ, có lẽ tôi có hàm 'get3op2()' chấp nhận toán tử nhị phân, như '+' hoặc '*', và trả về kết quả của toán tử đó trên các toán hạng được xác định trước, chẳng hạn như '3' và' 2' . Sau đó, về mặt giả thuyết, 'get3op2 (+)' sẽ trả về 5 (tức là 3 + 2) trong khi 'get3op2 (*)' sẽ trả về 6 (tức là 3 * 2). Đó có phải là những gì bạn đang cố gắng làm không? – psmay
Lưu ý: một cấu trúc gõ enum đơn thuần chỉ chứa một danh sách các tên hằng số mô tả làm giá trị cho các hằng số được gõ Long. Đối với những gì liên quan đến câu hỏi của bạn, tôi không thực sự thấy giá trị gia tăng của việc sử dụng một enum. Đối với câu hỏi nếu nó có thể vượt qua một nhà điều hành trực tiếp: nó không phải là trong VBA. Đối với các workaround, có có, nơi eval sẽ là lựa chọn tốt nhất như đã đề cập. Nếu không, tôi có thể không hiểu câu hỏi thực ... – Trace
@Kim có hai câu hỏi: '1.' các toán tử là tham số' 2.' cơ chế đằng sau việc đánh giá toán tử của hàm 'CountIFS'. – bonCodigo