Chúng ta có thể phải ép kiểu dữ liệu trong các trường hợp sau:
- Để đảm bảo tính toàn vẹn của dữ liệu: Khi giao tiếp giữa các ứng dụng, đôi khi có thể xảy ra tình huống mà định dạng dữ liệu không đồng nhất, ví dụ như một ứng dụng yêu cầu số nguyên từ một ứng dụng khác nhưng nhận được một chuỗi. Khi đó, ta cần ép kiểu dữ liệu để đảm bảo tính toàn vẹn của dữ liệu.
- Để thực hiện các phép toán hoặc xử lý dữ liệu: Một số toán tử chỉ hoạt động trên một loại dữ liệu nhất định, ví dụ như phép cộng chỉ hoạt động trên các số. Khi đó, ta cần ép kiểu dữ liệu để thực hiện các phép toán hoặc xử lý dữ liệu.
- Để đáp ứng yêu cầu của hệ thống: Khi lập trình, ta có thể phải đáp ứng yêu cầu của hệ thống, ví dụ như đối với một biến mà hệ thống yêu cầu phải là một chuỗi nhưng dữ liệu đầu vào lại là một số. Khi đó, ta cần ép kiểu dữ liệu để đáp ứng yêu cầu của hệ thống.
Chuyển số sang chuỗi:
- name: Convert number to string
set_fact:
my_number: 123
my_string: "{{ my_number | string }}"
Chuyển chuỗi sang số:
- name: Convert string to number
set_fact:
my_string: "456"
my_number: "{{ my_string | int }}"
Chuyển mảng thành chuỗi:
- name: Convert list to string
set_fact:
my_list: ['a', 'b', 'c']
my_string: "{{ my_list | join(',') }}"
Chuyển chuỗi thành mảng:
- name: Convert string to list
set_fact:
my_string: "a,b,c"
my_list: "{{ my_string | split(',') }}"
Ép kiểu dữ liệu với filter type_debug
:
- name: Convert variable type
set_fact:
my_var: "123"
my_int: "{{ my_var | type_debug('int') }}"